OSDN Git Service

PR c++/34949
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Apr 2013 13:46:00 +0000 (13:46 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Apr 2013 13:46:00 +0000 (13:46 +0000)
commit896a0c429a847ebbda7f33d67d7e53f2757a4260
treea3858d5e8ddd0ca9b466d3525480cd3308ad2bfb
parentd701b871e8562defb7f0de069fb925d6ab2ad597
PR c++/34949
PR c++/50243
* tree-eh.c (optimize_clobbers): Only remove clobbers if bb doesn't
contain anything but clobbers, at most one __builtin_stack_restore,
optionally debug stmts and final resx, and if it has at least one
incoming EH edge.  Don't check for SSA_NAME on LHS of a clobber.
(sink_clobbers): Don't check for SSA_NAME on LHS of a clobber.
Instead of moving clobbers with MEM_REF LHS with SSA_NAME address
which isn't defaut definition, remove them.
(unsplit_eh, cleanup_empty_eh): Use single_{pred,succ}_{p,edge}
instead of EDGE_COUNT comparisons or EDGE_{PRED,SUCC}.
* tree-ssa-ccp.c (execute_fold_all_builtins): Remove clobbers
with MEM_REF LHS with SSA_NAME address.

* g++.dg/opt/vt3.C: New test.
* g++.dg/opt/vt4.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@197580 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/opt/vt3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/opt/vt4.C [new file with mode: 0644]
gcc/tree-eh.c
gcc/tree-ssa-ccp.c