Commit f1b19062 by Zdenek Dvorak Committed by Zdenek Dvorak

tree-cfg.c (find_taken_edge_cond_expr): Use zero_p instead of integer_zerop.

	* tree-cfg.c (find_taken_edge_cond_expr): Use zero_p instead of
	integer_zerop.
	* tree-gimple.c (is_gimple_min_invariant): Consider overflowed
	constants invariant.

	* fortran/trans-intrinsic.c (gfc_conv_intrinsic_ishft): Convert
	the argument of the shift to the unsigned type.

From-SVN: r96435
parent 9e32d2be
2005-03-14 Zdenek Dvorak <dvorakz@suse.cz>
* tree-cfg.c (find_taken_edge_cond_expr): Use zero_p instead of
integer_zerop.
* tree-gimple.c (is_gimple_min_invariant): Consider overflowed
constants invariant.
2005-03-14 Zdenek Dvorak <dvorakz@suse.cz>
* basic-block.h (BB_VISITED): Removed.
* cfganal.c (dfs_enumerate_from): Do not use BB_VISITED flag.
......
2005-03-14 Zdenek Dvorak <dvorakz@suse.cz>
* fortran/trans-intrinsic.c (gfc_conv_intrinsic_ishft): Convert
the argument of the shift to the unsigned type.
2005-03-13 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/16907
......
......@@ -1793,7 +1793,7 @@ gfc_conv_intrinsic_ishft (gfc_se * se, gfc_expr * expr)
numbers, and we try to be compatible with other compilers, most
notably g77, here. */
rshift = fold_convert (type, build2 (RSHIFT_EXPR, utype,
convert (type, arg), width));
convert (utype, arg), width));
tmp = fold (build2 (GE_EXPR, boolean_type_node, arg2,
build_int_cst (TREE_TYPE (arg2), 0)));
......
......@@ -2376,20 +2376,11 @@ find_taken_edge_cond_expr (basic_block bb, tree val)
edge true_edge, false_edge;
extract_true_false_edges_from_block (bb, &true_edge, &false_edge);
/* Otherwise, try to determine which branch of the if() will be taken.
If VAL is a constant but it can't be reduced to a 0 or a 1, then
we don't really know which edge will be taken at runtime. This
may happen when comparing addresses (e.g., if (&var1 == 4)). */
if (integer_nonzerop (val))
return true_edge;
else if (integer_zerop (val))
return false_edge;
gcc_unreachable ();
gcc_assert (TREE_CODE (val) == INTEGER_CST);
return (zero_p (val) ? false_edge : true_edge);
}
/* Given an INTEGER_CST VAL and the entry block BB to a SWITCH_EXPR
statement, determine which edge will be taken out of the block. Return
NULL if any edge may be taken. */
......
......@@ -180,7 +180,7 @@ is_gimple_min_invariant (tree t)
case STRING_CST:
case COMPLEX_CST:
case VECTOR_CST:
return !TREE_OVERFLOW (t);
return true;
default:
return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment