[PATCH] Isolate erroneous paths optimization -- preserve *0.

Richard Biener richard.guenther@gmail.com
Wed Nov 13 11:32:00 GMT 2013


On Wed, Nov 13, 2013 at 6:54 AM, Jeff Law <law@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
>> ...
>>
>> TIA
>
> Sigh.  The load is considered a potentially throwing statement, which means
> it ends a block and thus we can't immediately follow the null-deref with a
> trap, the trap would have to be in another block. ugh.  I'm going to have to
> think about this a bit.

Mark it with TREE_NOTHROW (but it should have been that way already,
or EH code should have been present before the path elimination - otherwise
the incoming GIMPLE would have had exactly the same problem).

Note that externally throwing stmts are not an issue.

Richard.

> jeff



More information about the Gcc-patches mailing list