diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2005-03-14 16:23:43 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2005-03-14 15:23:43 +0000 |
commit | f1b190625ecdc8492337c07e6f91c70091b22749 (patch) | |
tree | 600d2dc039f460c88e992c819e19ca7b7b947cb7 /gcc/tree-cfg.c | |
parent | 9e32d2be984b4cdebf289aaa70fb08a4704b7b2b (diff) | |
download | gcc-f1b190625ecdc8492337c07e6f91c70091b22749.zip gcc-f1b190625ecdc8492337c07e6f91c70091b22749.tar.gz gcc-f1b190625ecdc8492337c07e6f91c70091b22749.tar.bz2 |
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
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 18fcab7..32dc2bc 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -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. */ |