Ada build fails on x86_64 in gnattools: ../../xgcc -c -I./ -I../rts -I. -I/home/ssb/src/gcc41/gcc/ada -B../../ -O2 -g -gnatpg -gnata -I- /home/ssb/src/gcc41/gcc/ada/vms_conv.adb
raised STORAGE_ERROR : stack overflow (or erroneous memory access) gnatmake: "/home/ssb/src/gcc41/gcc/ada/vms_conv.adb" compilation error make[3]: *** [../../gnat] Error 4 make[3]: Leaving directory `/home/ssb/src/build/gcc/ada/tools' Here is reduced testcase: ------------------------------------------------------------------------------ cat <<EOF > bug.ads package Bug is type String_Ptr is access constant String; SS : String_Ptr; procedure A; end Bug; EOF cat <<EOF > bug.adb package body Bug is procedure B is P : Natural; Q : Natural; begin P := SS'First; while P <= SS'Last loop begin Q := P; while SS (Q) /= ' ' loop Q := Q + 1; end loop; P := Q + 1; end; end loop; end B; procedure A is begin B; end A; end Bug; EOF gcc bug.adb -O1 -S ------------------------------------------------------------------------------ And backtrace: Program received signal SIGSEGV, Segmentation fault. 0x0000000000951585 in record_block_change (block=0x2aaaab12f0e0) at ../../gcc41/gcc/function.c:5498 5498 last_block = VARRAY_TOP_TREE (cfun->ib_boundaries_block); (gdb) bt #0 0x0000000000951585 in record_block_change (block=0x2aaaab12f0e0) at ../../gcc41/gcc/function.c:5498 #1 0x00000000008bcca3 in expand_expr_real (exp=0x2aaaab14ccc0, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:6435 #2 0x00000000008a960a in expand_expr (exp=0x2aaaab14ccc0, target=0x0, mode=VOIDmode, modifier=EXPAND_NORMAL) at expr.h:492 #3 0x00000000008bc127 in expand_operands (exp0=0x2aaaab14ccc0, exp1=0x2aaaab0a52a0, target=0x0, op0=0x7fffff937230, op1=0x7fffff937228, modifier=EXPAND_NORMAL) at ../../gcc41/gcc/expr.c:6170 #4 0x00000000008c7b30 in expand_expr_real_1 (exp=0x2aaaab14fe10, target=0x0, tmode=DImode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:7653 #5 0x00000000008bccf3 in expand_expr_real (exp=0x2aaaab14fe10, target=0x0, tmode=DImode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:6443 #6 0x00000000008a960a in expand_expr (exp=0x2aaaab14fe10, target=0x0, mode=DImode, modifier=EXPAND_NORMAL) at expr.h:492 #7 0x00000000008c450a in expand_expr_real_1 (exp=0x2aaaab14cc80, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:7443 #8 0x00000000008bccf3 in expand_expr_real (exp=0x2aaaab14cc80, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:6443 #9 0x00000000008a960a in expand_expr (exp=0x2aaaab14cc80, target=0x0, mode=VOIDmode, modifier=EXPAND_NORMAL) at expr.h:492 #10 0x00000000008bc127 in expand_operands (exp0=0x2aaaab14cc80, exp1=0x2aaaab137700, target=0x0, op0=0x7fffff93b9c0, op1=0x7fffff93b9b8, modifier=EXPAND_NORMAL) at ../../gcc41/gcc/expr.c:6170 #11 0x00000000008cfe82 in expand_expr_real_1 (exp=0x2aaaab14ff50, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:8396 #12 0x00000000008bccf3 in expand_expr_real (exp=0x2aaaab14ff50, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:6443 #13 0x00000000008a960a in expand_expr (exp=0x2aaaab14ff50, target=0x0, mode=VOIDmode, modifier=EXPAND_NORMAL) at expr.h:492 #14 0x00000000008c4207 in expand_expr_real_1 (exp=0x2aaaab14cec0, target=0x0, tmode=DImode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:7430 #15 0x00000000008bccf3 in expand_expr_real (exp=0x2aaaab14cec0, target=0x0, tmode=DImode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:6443 #16 0x00000000008a960a in expand_expr (exp=0x2aaaab14cec0, target=0x0, mode=DImode, modifier=EXPAND_NORMAL) at expr.h:492 #17 0x00000000008bc7cb in expand_expr_addr_expr_1 (exp=0x2aaaab140e00, target=0x0, tmode=DImode, modifier=EXPAND_NORMAL) at ../../gcc41/gcc/expr.c:6281 #18 0x00000000008bcab7 in expand_expr_addr_expr (exp=0x2aaaab14cc00, target=0x0, tmode=DImode, modifier=EXPAND_NORMAL) at ../../gcc41/gcc/expr.c:6330 #19 0x00000000008cefa0 in expand_expr_real_1 (exp=0x2aaaab14cc00, target=0x0, tmode=SImode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:8271 #20 0x00000000008bccf3 in expand_expr_real (exp=0x2aaaab14cc00, target=0x0, tmode=SImode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:6443 #21 0x00000000008a960a in expand_expr (exp=0x2aaaab14cc00, target=0x0, mode=SImode, modifier=EXPAND_NORMAL) at expr.h:492 #22 0x00000000008c450a in expand_expr_real_1 (exp=0x2aaaab14cbc0, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:7443 #23 0x00000000008bccf3 in expand_expr_real (exp=0x2aaaab14cbc0, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:6443 #24 0x00000000008a960a in expand_expr (exp=0x2aaaab14cbc0, target=0x0, mode=VOIDmode, modifier=EXPAND_NORMAL) at expr.h:492 #25 0x00000000008bc147 in expand_operands (exp0=0x2aaaab14cd40, exp1=0x2aaaab14cbc0, target=0x0, op0=0x7fffff944a20, op1=0x7fffff944a18, modifier=EXPAND_NORMAL) at ../../gcc41/gcc/expr.c:6171 #26 0x00000000008cfe82 in expand_expr_real_1 (exp=0x2aaaab14fe60, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:8396 #27 0x00000000008bccf3 in expand_expr_real (exp=0x2aaaab14fe60, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:6443 #28 0x00000000008a960a in expand_expr (exp=0x2aaaab14fe60, target=0x0, mode=VOIDmode, modifier=EXPAND_NORMAL) at expr.h:492 #29 0x00000000008bc127 in expand_operands (exp0=0x2aaaab14fe60, exp1=0x2aaaab14cd00, target=0x0, op0=0x7fffff946e10, op1=0x7fffff946e08, modifier=EXPAND_NORMAL) at ../../gcc41/gcc/expr.c:6170 #30 0x00000000008c7b30 in expand_expr_real_1 (exp=0x2aaaab14feb0, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:7653 #31 0x00000000008bccf3 in expand_expr_real (exp=0x2aaaab14feb0, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:6443 #32 0x00000000008a960a in expand_expr (exp=0x2aaaab14feb0, target=0x0, mode=VOIDmode, modifier=EXPAND_NORMAL) at expr.h:492 #33 0x00000000008bc127 in expand_operands (exp0=0x2aaaab14feb0, exp1=0x2aaaab13df00, target=0x0, op0=0x7fffff949200, op1=0x7fffff9491f8, modifier=EXPAND_NORMAL) at ../../gcc41/gcc/expr.c:6170 #34 0x00000000008c7b30 in expand_expr_real_1 (exp=0x2aaaab14ff00, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:7653 #35 0x00000000008bccf3 in expand_expr_real (exp=0x2aaaab14ff00, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:6443 #36 0x00000000008a960a in expand_expr (exp=0x2aaaab14ff00, target=0x0, mode=VOIDmode, modifier=EXPAND_NORMAL) at expr.h:492 #37 0x00000000008c4207 in expand_expr_real_1 (exp=0x2aaaab14cdc0, target=0x0, tmode=SImode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:7430 #38 0x00000000008bccf3 in expand_expr_real (exp=0x2aaaab14cdc0, target=0x0, tmode=SImode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc41/gcc/expr.c:6443 #39 0x00000000007b2312 in expand_expr (exp=0x2aaaab14cdc0, target=0x0, mode=SImode, modifier=EXPAND_NORMAL) at expr.h:492 #40 0x00000000007b2252 in computation_cost (expr=0x2aaaab14cdc0) at ../../gcc41/gcc/tree-ssa-loop-ivopts.c:2544 #41 0x00000000007b8782 in get_computation_cost_at (data=0x7fffff94d800, use=0x15ec3b0, cand=0x16bd360, address_p=0 '\0', depends_on=0x7fffff94d6a8, at=0x2aaaab133050) at ../../gcc41/gcc/tree-ssa-loop-ivopts.c:3853 #42 0x00000000007b87e3 in get_computation_cost (data=0x7fffff94d800, use=0x15ec3b0, cand=0x16bd360, address_p=0 '\0', depends_on=0x7fffff94d6a8) at ../../gcc41/gcc/tree-ssa-loop-ivopts.c:3868 #43 0x00000000007b901c in determine_use_iv_cost_condition ( data=0x7fffff94d800, use=0x15ec3b0, cand=0x16bd360) at ../../gcc41/gcc/tree-ssa-loop-ivopts.c:4072 #44 0x00000000007b95c5 in determine_use_iv_cost (data=0x7fffff94d800, use=0x15ec3b0, cand=0x16bd360) at ../../gcc41/gcc/tree-ssa-loop-ivopts.c:4200 #45 0x00000000007b965b in determine_use_iv_costs (data=0x7fffff94d800) at ../../gcc41/gcc/tree-ssa-loop-ivopts.c:4228 #46 0x00000000007be974 in tree_ssa_iv_optimize_loop (data=0x7fffff94d800, loop=0x15f90a0) at ../../gcc41/gcc/tree-ssa-loop-ivopts.c:5926 #47 0x00000000007bea64 in tree_ssa_iv_optimize (loops=0x160ae20) at ../../gcc41/gcc/tree-ssa-loop-ivopts.c:5978 #48 0x0000000000ccf527 in tree_ssa_loop_ivopts () at ../../gcc41/gcc/tree-ssa-loop.c:388 #49 0x0000000000bbe642 in execute_one_pass (pass=0x11106c0) at ../../gcc41/gcc/passes.c:776 #50 0x0000000000bbe701 in execute_pass_list (pass=0x11106c0) at ../../gcc41/gcc/passes.c:808 #51 0x0000000000bbe71f in execute_pass_list (pass=0x1110300) at ../../gcc41/gcc/passes.c:809 #52 0x0000000000bbe71f in execute_pass_list (pass=0x10f6820) at ../../gcc41/gcc/passes.c:809 #53 0x0000000000742c50 in tree_rest_of_compilation (fndecl=0x2aaaab11f270) at ../../gcc41/gcc/tree-optimize.c:419 #54 0x0000000000434fa8 in gnat_expand_body (gnu_decl=0x2aaaab11f270) at ../../gcc41/gcc/ada/misc.c:636 #55 0x0000000000c30b9a in cgraph_expand_function (node=0x2aaaab1248f0) at ../../gcc41/gcc/cgraphunit.c:1033 #56 0x0000000000c30e25 in cgraph_expand_all_functions () at ../../gcc41/gcc/cgraphunit.c:1099 #57 0x0000000000c314f3 in cgraph_optimize () at ../../gcc41/gcc/cgraphunit.c:1254 #58 0x0000000000432de2 in gnat_parse_file (set_yydebug=0) at ../../gcc41/gcc/ada/misc.c:245 #59 0x0000000000b63c76 in compile_file () at ../../gcc41/gcc/toplev.c:974 #60 0x0000000000b65775 in do_compile () at ../../gcc41/gcc/toplev.c:1934 #61 0x0000000000b657d9 in toplev_main (argc=6, argv=0x7fffff94dc98) at ../../gcc41/gcc/toplev.c:1966 #62 0x0000000000731ebf in main (argc=6, argv=0x7fffff94dc98) at ../../gcc41/gcc/main.c:35 -- Summary: ICE Segfault in record_block_change at function.c:5498 Product: gcc Version: 4.1.0 Status: UNCONFIRMED Keywords: ice-on-valid-code, build Severity: normal Priority: P2 Component: ada AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: belyshev at depni dot sinp dot msu dot ru CC: gcc-bugs at gcc dot gnu dot org GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22336