TODO_rebuild_alias and -O0

Ludovic Courtès ludo@gnu.org
Mon Oct 8 09:27:00 GMT 2012


Hello,

Consider the attached plug-in, which adds a new dummy pass after the
“ssa” pass, with ‘TODO_rebuild_alias’ as its start flags:

-------------- next part --------------
A non-text attachment was scrubbed...
Name: alias.c
Type: text/x-csrc
Size: 960 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20121008/057dec8e/attachment.bin>
-------------- next part --------------

When compiling with -O0 a non-trivial file with that plug-in, one ends
up with:

  numbers.c:8728:10: internal compiler error: in make_decl_rtl, at varasm.c:1163
  gcc: internal compiler error: Aborted (program cc1)

and a backtrace like this:

--8<---------------cut here---------------start------------->8---
#6  0x000000000056bfa4 in fancy_abort (file=<optimized out>, line=1163, 
    function=0xc2a3f5 "make_decl_rtl") at ../../gcc-4.6.2/gcc/diagnostic.c:893
#7  0x0000000000853bae in make_decl_rtl (decl=0x7f3cfd0458c0) at ../../gcc-4.6.2/gcc/varasm.c:1159
#8  0x00000000005bd485 in expand_expr_real_1 (exp=0x7f3cfd0458c0, target=<optimized out>, 
    tmode=VOIDmode, modifier=EXPAND_WRITE, alt_rtl=<optimized out>)
    at ../../gcc-4.6.2/gcc/expr.c:8462
#9  0x00000000005c83a8 in expand_expr (modifier=EXPAND_WRITE, mode=VOIDmode, target=0x0, 
    exp=0x7f3cfd0458c0) at ../../gcc-4.6.2/gcc/expr.h:422
#10 expand_assignment (nontemporal=0 '\000', from=0x7f3cfc967160, to=0x7f3cfd0458c0)
    at ../../gcc-4.6.2/gcc/expr.c:4422
#11 expand_assignment (to=0x7f3cfd0458c0, from=0x7f3cfc967160, nontemporal=0 '\000')
    at ../../gcc-4.6.2/gcc/expr.c:4119
#12 0x00000000005350c8 in expand_gimple_stmt_1 (stmt=0x7f3cfd046460)
    at ../../gcc-4.6.2/gcc/cfgexpand.c:1975
#13 expand_gimple_stmt (stmt=0x7f3cfd046460) at ../../gcc-4.6.2/gcc/cfgexpand.c:2084
#14 0x0000000000536218 in expand_gimple_basic_block (bb=0x7f3cfd047a90)
    at ../../gcc-4.6.2/gcc/cfgexpand.c:3626
#15 0x0000000000539bbe in gimple_expand_cfg () at ../../gcc-4.6.2/gcc/cfgexpand.c:4109
#16 0x000000000068b589 in execute_one_pass (pass=0x10a3dc0) at ../../gcc-4.6.2/gcc/passes.c:1556
#17 0x000000000068b835 in execute_pass_list (pass=0x10a3dc0) at ../../gcc-4.6.2/gcc/passes.c:1611
#18 0x0000000000757751 in tree_rest_of_compilation (fndecl=0x7f3cfdb03900)
    at ../../gcc-4.6.2/gcc/tree-optimize.c:422
#19 0x00000000008978cf in cgraph_expand_function (node=0x7f3cfd2c8420)
    at ../../gcc-4.6.2/gcc/cgraphunit.c:1576
#20 0x000000000089975e in cgraph_output_in_order () at ../../gcc-4.6.2/gcc/cgraphunit.c:1733
#21 cgraph_optimize () at ../../gcc-4.6.2/gcc/cgraphunit.c:1894
#22 0x000000000089992a in cgraph_finalize_compilation_unit ()
    at ../../gcc-4.6.2/gcc/cgraphunit.c:1096
#23 0x00000000004a3df5 in c_write_global_declarations () at ../../gcc-4.6.2/gcc/c-decl.c:9871
--8<---------------cut here---------------end--------------->8---

There’s no such problem when optimizations are turned on, though.

Does it mean that extra work is needed at -O0 before one can use alias info?

Thanks,
Ludo’.


More information about the Gcc mailing list