Test eon from SPEC CPU2000 fails to build with "-O2 -fnon-call-exceptions -ffast-math -fsignaling-nans" due to an ICE for control flow in the middle of a basic block. Two minimized tests show different warnings on both powerpc-linux and i686-linux:
elm3b145% /opt/gcc-nightly/trunk/bin/g++ -O2 -fnon-call-exceptions -ffast-math -fsignaling-nans -c bug13.cc bug13.cc: In constructor mrGrid::mrGrid(): bug13.cc:22: error: control flow in the middle of basic block 4 bug13.cc:22: internal compiler error: verify_flow_info failed Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. elm3b145% /opt/gcc-nightly/trunk/bin/g++ -O2 -fnon-call-exceptions -ffast-math -fsignaling-nans -c bug14.cc bug14.cc: In function int main(): bug14.cc:27: error: BB 11 can not throw but has EH edges bug14.cc:27: error: BB 12 can not throw but has EH edges bug14.cc:27: error: control flow in the middle of basic block 13 bug14.cc:27: error: control flow in the middle of basic block 13 bug14.cc:27: internal compiler error: verify_flow_info failed Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. Here's bug13.cc; I'll attach the other which is slightly larger. template <class T> class ggStaticArray { public: ~ggStaticArray(); }; template <class T> class ggGrid { public: ggGrid() : grid() { } ggStaticArray<T> grid; }; class mrGrid { public: mrGrid(void); protected: ggGrid<int*> grid; double multiplier; }; mrGrid::mrGrid(void) { double xMeasure, yMeasure, zMeasure; double cellDimension; cellDimension = multiplier * (xMeasure * yMeasure * zMeasure); } Regression hunts for both identified this patch: http://gcc.gnu.org/viewcvs?view=rev&rev=108425 r108425 | law | 2005-12-12 19:59:16 +0000 (Mon, 12 Dec 2005) -- Summary: ICE with control flow in the middle of basic block for -fnon-call-exceptions Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: janis at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34036