Adam Nemet <ane...@caviumnetworks.com> writes: > For two testresults now the cleanup tests are failing in both gcc and g++: > > http://gcc.gnu.org/ml/gcc-testresults/2009-04/msg01031.html > http://gcc.gnu.org/ml/gcc-testresults/2009-04/msg00592.html > > I waited for another testresults because there were some bug fixes in this > area after the eh changes. > > Does somebody know what's going on? I'll look at it otherwise.
I am not exactly sure what has exposed this but the bug seems to be old. can_throw_external in except.c does not look at the branch delay slot (second entry in a SEQUENCE) to determine whether the insn may throw or not. In gcc.dg/cleanup-8.c for example after inlining fn3, the trapping store is moved to the delay slot of abort, which is a nothrow function so we decide that fn2 can't throw and then ultimately remove the eh region around fn1 in fn0. Adam