Fix PR optimization/12215

Eric Botcazou ebotcazou@libertysurf.fr
Fri Sep 12 21:54:00 GMT 2003


Hi,

This is again a problem with -fnon-call-exceptions, a regression from 3.2.3 
present on the 3.3 branch (and latent on mainline).

The CSE pass can destroy the CFG in presence of trapping loads, because it 
may emit insns right after those loads. Now trapping loads can cause a 
control flow transfer, so they are the last insns in their basic block. Once 
the CFG is destroyed, bogus edges are purged, which leads in turn to the 
deletion of basic blocks.

Bootstrapped/regtested on i586-redhat-linux-gnu (3.3 branch except Ada).
Ok for mainline and branch?


2003-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>

        PR optimization/12215
        * cse.c (cse_set_around_loop): Emit the move at the beginning
	of the next basic block for trapping sets.


2003-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>

        * g++.dg/opt/cfg2.C: New test.


-- 
Eric Botcazou
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pr12215.diff
Type: text/x-diff
Size: 732 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20030912/184572b0/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cfg2.C
Type: text/x-c++src
Size: 671 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20030912/184572b0/attachment-0001.bin>


More information about the Gcc-patches mailing list