On Wed, Nov 13, 2013 at 7:53 AM, Jeff Law <l...@redhat.com> wrote: > On 11/12/13 15:33, Dominique Dhumieres wrote: >> >> Bootstrapping with ada id broken by revision 204708 >> (at least on x86_64-apple-darwin13): >> >> ... >> # gnattools1 >> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C >> ../gcc/ada/tools -f ../Makefile \ >> "CC=../../xgcc -B../../" "CXX=../../xg++ -B../../ >> -B../../../x86_64-apple-darwin13.0.0/libstdc++-v3/src/.libs >> -B../../../x86_64-apple-darwin13.0.0/libstdc++-v3/libsupc++/.libs >> -L../../../x86_64-apple-darwin13.0.0/libstdc++-v3/src/.libs >> -L../../../x86_64-apple-darwin13.0.0/libstdc++-v3/libsupc++/.libs" >> "CFLAGS=-g -O2 -W -Wall" "LDFLAGS=-static-libstdc++ -static-libgcc >> -Wl,-no_pie " "ADAFLAGS=-gnatpg -gnata" "ADA_CFLAGS=" "INCLUDES=-I. -I.. >> -I../.. -I/opt/gcc/work/gcc/ada -I/opt/gcc/work/gcc/config >> -I/opt/gcc/work/gcc/../include -I/opt/gcc/work/gcc" "ADA_INCLUDES=-I- >> -I../rts -I. -I/opt/gcc/work/gcc/ada" "exeext=" "fsrcdir=/opt/gcc/work/gcc" >> "srcdir=/opt/gcc/work/gcc" "GNATMAKE=../../gnatmake" >> "GNATLINK=../../gnatlink" "GNATBIND=../../gnatbind" "TOOLSCASE=native" \ >> ../../gnatmake ../../gnatlink >> ../../xgcc -B../../ -c -g -O2 -W -Wall -gnatpg -gnata -I- -I../rts -I. >> -I/opt/gcc/work/gcc/ada /opt/gcc/work/gcc/ada/make.adb -o make.o >> /opt/gcc/work/gcc/ada/make.adb: In function >> 'Make.Compile_Sources.Start_Compile_If_Possible': >> /opt/gcc/work/gcc/ada/make.adb:3312:7: error: control flow in the middle >> of basic block 550 >> +===========================GNAT BUG >> DETECTED==============================+ >> | 4.9.0 20131112 (experimental) [trunk revision 204710p13r1] >> (x86_64-apple-darwin13.0.0) GCC error:| >> | verify_flow_info failed >> | >> | Error detected around /opt/gcc/work/gcc/ada/make.adb:3312:7 >> | >> | Please submit a bug report; see http://gcc.gnu.org/bugs.html. >> | >> | Use a subject line meaningful to you and us to track the bug. >> | >> | Include the entire contents of this bug box in the report. >> | >> | Include the exact gcc or gnatmake command that you entered. >> | >> | Also include sources listed below in gnatchop format >> | >> | (concatenated together with no headers between files). >> | >> >> +==========================================================================+ >> >> Please include these source files with error report >> Note that list may not be accurate in some cases, >> so please double check that the problem can still >> be reproduced with the set of files listed. >> Consider also -gnatd.n switch (see debug.adb). >> >> ../rts/system.ads >> /opt/gcc/work/gcc/ada/make.adb >> /opt/gcc/work/gcc/ada/make.ads >> /opt/gcc/work/gcc/ada/ali.ads >> /opt/gcc/work/gcc/ada/casing.ads >> /opt/gcc/work/gcc/ada/types.ads > > So in the non-call exceptions case (as occurs here) we have a few hurdles. > > First we have to split the duplicate block so that the null dereference ends > the block (it's a control altering statement in this context). Splitting the > block seems relatively easy. > > We also have to wire up an EH edge from the block containing the null > dereference to its handler. > > Then we have to update the PHIs in the handler as the handler has a new > incoming edge. > > These are all solvable problems, in fact none are particularly complex. > > However, there's a larger question here -- if a block we want to isolate has > abnormal outgoing edges, do we want to mess with it at all?!? Out of an > abundance of caution, I think the answer is no.
Right, you don't want to isolate paths with already have exception handling in place. > I'll have a patch going through testing overnight. > > jeff >