]> git.ipfire.org Git - thirdparty/gcc.git/commit - libgcc/unwind-dw2.c
re PR tree-optimization/53265 (Warn when undefined behavior implies smaller iteration...
authorJakub Jelinek <jakub@redhat.com>
Thu, 14 Mar 2013 09:13:36 +0000 (10:13 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 14 Mar 2013 09:13:36 +0000 (10:13 +0100)
commitfbd28bc3b2c3394db09577ff2f5a594d50c75b2c
tree20df72f941802d316ad1e5b63a60b221cc29586a
parentdf2dfaea4e76a6159e733073aff5aa5e6837289a
re PR tree-optimization/53265 (Warn when undefined behavior implies smaller iteration count)

PR tree-optimization/53265
* common.opt (Waggressive-loop-optimizations): New option.
* tree-ssa-loop-niter.c: Include tree-pass.h.
(do_warn_aggressive_loop_optimizations): New function.
(record_estimate): Call it.  Don't add !is_exit bounds to loop->bounds
if number_of_latch_executions returned constant.
(estimate_numbers_of_iterations_loop): Call number_of_latch_executions
early.  If number_of_latch_executions returned constant, set
nb_iterations_upper_bound back to it.
* cfgloop.h (struct loop): Add warned_aggressive_loop_optimizations
field.
* Makefile.in (tree-ssa-loop-niter.o): Depend on $(TREE_PASS_H).
* doc/invoke.texi (-Wno-aggressive-loop-optimizations): Document.

* gcc.dg/pr53265.c: New test.
* gcc.dg/torture/pr49518.c: Add -Wno-aggressive-loop-optimizations
to dg-options.
* g++.dg/opt/longbranch2.C (EBCOTLut): Double sizes of a2 and a3
arrays.
* gcc.dg/tree-ssa/cunroll-10.c (main): Rename to foo.  Add argument
n, use it as high bound instead of 4.

* unwind-dw2.c (execute_cfa_program): Avoid
-Waggressive-array-optimizations warnings for DW_CFA_GNU_window_save
on targets with DWARF_FRAME_REGISTERS < 32.

* testsuite/libmudflap.c/fail37-frag.c: Add optimization barrier.

From-SVN: r196650
15 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/cfgloop.h
gcc/common.opt
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/opt/longbranch2.C
gcc/testsuite/gcc.dg/pr53265.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr49518.c
gcc/testsuite/gcc.dg/tree-ssa/cunroll-10.c
gcc/tree-ssa-loop-niter.c
libgcc/ChangeLog
libgcc/unwind-dw2.c
libmudflap/ChangeLog
libmudflap/testsuite/libmudflap.c/fail37-frag.c