Fix noreturn related LTO ICE

Eric Botcazou ebotcazou@adacore.com
Wed Jun 2 11:00:00 GMT 2010


> 	* tree-cfgcleanup.c (fixup_noreturn_call): Break out from ...;
> 	remove return value.
> 	(split_bbs_on_noreturn_calls) .... here.
> 	* tree-optimize.c (execute_fixup_cfg): Fixup noreturn calls too.
> 	* tree-flow.h (fixup_noreturn_call): New.
> 	* tree-cfg.c (verify_call, verify_control_flow): Allow nonfixed
> 	noreturns during IPA passes.

This has introduced an ACATS regression at -O2 on x86:

FAIL:   cxg1004

Reduced testcase attached.

eric@atlantis:~/build/gcc/native32> gcc/xgcc -Bgcc -S cxg1004.adb -O2
unhandled expression in get_expr_operands():
 <error_mark 0xf7cc2680>

+===========================GNAT BUG DETECTED==============================+
| 4.6.0 20100602 (experimental) [trunk revision 160140] (i586-suse-linux-gnu) 
GCC error:|
| in get_expr_operands, at tree-ssa-operands.c:1019                        |
| Error detected around cxg1004.adb:4:1                 


Old value = (tree) 0xf757d480
New value = (tree) 0xf7cc2680
set_ssa_use_from_ptr (use=0xf794b254, val=0xf7cc2680)
    at /home/eric/svn/gcc/gcc/tree-flow-inline.h:237
237       link_imm_use (use, val);
(gdb) p debug_tree(0xf7cc2680)
 <error_mark 0xf7cc2680>
$24 = void
(gdb) bt
#0  set_ssa_use_from_ptr (use=0xf794b254, val=0xf7cc2680)
    at /home/eric/svn/gcc/gcc/tree-flow-inline.h:237
#1  0x096c5f77 in fixup_noreturn_call (stmt=0xf791d984)
    at /home/eric/svn/gcc/gcc/tree-cfgcleanup.c:573
#2  0x09916a14 in execute_fixup_cfg ()
    at /home/eric/svn/gcc/gcc/tree-optimize.c:282

-- 
Eric Botcazou
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cxg1004.adb
Type: text/x-adasrc
Size: 725 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20100602/63908319/attachment.bin>


More information about the Gcc-patches mailing list