aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-fold.c
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2016-05-02 16:09:07 +0200
committerMarc Glisse <glisse@gcc.gnu.org>2016-05-02 14:09:07 +0000
commita8b85ce9e2bffc9fcacaf0cfbbb803b01f7598e8 (patch)
tree7567c427730a007f93a9f0c7a26e2c9deebd6207 /gcc/gimple-fold.c
parent5b37e8664b05336df60996a2411b4d61a852c613 (diff)
downloadgcc-a8b85ce9e2bffc9fcacaf0cfbbb803b01f7598e8.zip
gcc-a8b85ce9e2bffc9fcacaf0cfbbb803b01f7598e8.tar.gz
gcc-a8b85ce9e2bffc9fcacaf0cfbbb803b01f7598e8.tar.bz2
Move "X +- C1 CMP C2 to X CMP C2 -+ C1" to match.pd
2016-05-02 Marc Glisse <marc.glisse@inria.fr> gcc/ * flag-types.h (enum warn_strict_overflow_code): Move ... * coretypes.h: ... here. * fold-const.h (fold_overflow_warning): Declare. * fold-const.c (fold_overflow_warning): Make non-static. (fold_comparison): Move the transformation of X +- C1 CMP C2 into X CMP C2 -+ C1 ... * match.pd: ... here. * gimple-fold.c (fold_stmt_1): Protect with fold_defer_overflow_warnings. gcc/testsuite/ * gcc.dg/tree-ssa/20040305-1.c: Adjust. From-SVN: r235760
Diffstat (limited to 'gcc/gimple-fold.c')
-rw-r--r--gcc/gimple-fold.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index 5607598..d5e859c 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -3525,7 +3525,9 @@ fold_stmt_1 (gimple_stmt_iterator *gsi, bool inplace, tree (*valueize) (tree))
{
bool changed = false;
gimple *stmt = gsi_stmt (*gsi);
+ bool nowarning = gimple_no_warning_p (stmt);
unsigned i;
+ fold_defer_overflow_warnings ();
/* First do required canonicalization of [TARGET_]MEM_REF addresses
after propagation.
@@ -3818,6 +3820,7 @@ fold_stmt_1 (gimple_stmt_iterator *gsi, bool inplace, tree (*valueize) (tree))
}
}
+ fold_undefer_overflow_warnings (changed && !nowarning, stmt, 0);
return changed;
}