diff options
author | Marek Polacek <polacek@redhat.com> | 2012-10-19 16:53:39 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2012-10-19 16:53:39 +0000 |
commit | af89bd042ddf9fff34ad79c16123a4cbf814b003 (patch) | |
tree | fedc0eb01fed59fdb431827502037cab4085b813 /gcc | |
parent | db2415a9a10916b530b6325c5aa6fa39cfe4f246 (diff) | |
download | gcc-af89bd042ddf9fff34ad79c16123a4cbf814b003.zip gcc-af89bd042ddf9fff34ad79c16123a4cbf814b003.tar.gz gcc-af89bd042ddf9fff34ad79c16123a4cbf814b003.tar.bz2 |
re PR middle-end/54945 (Too strong non-aliasing analysis?)
PR54945
From-SVN: r192617
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fold-const.c | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f599d1e..6e87fad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-10-19 Marek Polacek <polacek@redhat.com> + + PR middle-end/54945 + * fold-const.c (fold_sign_changed_comparison): Punt if folding + pointer/non-pointer comparison. + 2012-10-19 Greta Yorsh <Greta.Yorsh@arm.com> * doc/sourcebuild.texi (Effective-Target Keywords): Document diff --git a/gcc/fold-const.c b/gcc/fold-const.c index b1d811d..053b3f5 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -6731,12 +6731,14 @@ fold_sign_changed_comparison (location_t loc, enum tree_code code, tree type, && TREE_TYPE (TREE_OPERAND (arg1, 0)) == inner_type)) return NULL_TREE; - if ((TYPE_UNSIGNED (inner_type) != TYPE_UNSIGNED (outer_type) - || POINTER_TYPE_P (inner_type) != POINTER_TYPE_P (outer_type)) + if (TYPE_UNSIGNED (inner_type) != TYPE_UNSIGNED (outer_type) && code != NE_EXPR && code != EQ_EXPR) return NULL_TREE; + if (POINTER_TYPE_P (inner_type) != POINTER_TYPE_P (outer_type)) + return NULL_TREE; + if (TREE_CODE (arg1) == INTEGER_CST) arg1 = force_fit_type_double (inner_type, tree_to_double_int (arg1), 0, TREE_OVERFLOW (arg1)); |