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

Reply via email to