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> 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. * basic-block.h (BB_VISITED): Removed.
* cfganal.c (dfs_enumerate_from): Do not use BB_VISITED flag. * 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> 2005-03-13 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/16907 PR fortran/16907
......
...@@ -1793,7 +1793,7 @@ gfc_conv_intrinsic_ishft (gfc_se * se, gfc_expr * expr) ...@@ -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 numbers, and we try to be compatible with other compilers, most
notably g77, here. */ notably g77, here. */
rshift = fold_convert (type, build2 (RSHIFT_EXPR, utype, 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, tmp = fold (build2 (GE_EXPR, boolean_type_node, arg2,
build_int_cst (TREE_TYPE (arg2), 0))); build_int_cst (TREE_TYPE (arg2), 0)));
......
...@@ -2377,19 +2377,10 @@ find_taken_edge_cond_expr (basic_block bb, tree val) ...@@ -2377,19 +2377,10 @@ find_taken_edge_cond_expr (basic_block bb, tree val)
extract_true_false_edges_from_block (bb, &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. gcc_assert (TREE_CODE (val) == INTEGER_CST);
If VAL is a constant but it can't be reduced to a 0 or a 1, then return (zero_p (val) ? false_edge : true_edge);
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 ();
} }
/* Given an INTEGER_CST VAL and the entry block BB to a SWITCH_EXPR /* 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 statement, determine which edge will be taken out of the block. Return
NULL if any edge may be taken. */ NULL if any edge may be taken. */
......
...@@ -180,7 +180,7 @@ is_gimple_min_invariant (tree t) ...@@ -180,7 +180,7 @@ is_gimple_min_invariant (tree t)
case STRING_CST: case STRING_CST:
case COMPLEX_CST: case COMPLEX_CST:
case VECTOR_CST: case VECTOR_CST:
return !TREE_OVERFLOW (t); return true;
default: default:
return false; 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