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
>

Reply via email to