https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99782
Bug ID: 99782 Summary: Compile time and memory hog w/ __int128 on aarch64 Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: compile-time-hog, memory-hog Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- Target: aarch64-linux-gnu gcc-11.0.1-alpha20210321 snapshot (g:fc24ea2374259d401a46ce3526688b7e79d4cc13) takes indefinite time and consumes inordinate memory when compiling the following testcase w/ -O3: int hb; void w4 (__int128 uv, int ng) { int vh; for (vh = 0; vh < 14; ++vh) { ++ng; hb = (hb == uv) && ng; } } % timeout 10 aarch64-linux-gnu-gcc-11.0.1 -O3 -c nujte7ga.c zsh: exit 124 timeout 10 aarch64-linux-gnu-gcc-11.0.1 -O3 -c nujte7ga.c (gdb) where #0 0x00007ffff78b2afa in memset () from /lib64/libc.so.6 #1 0x00000000009b5a48 in memset (__len=<optimized out>, __ch=175, __dest=0x7ffe8239c000) at /usr/include/bits/string_fortified.h:56 #2 ggc_internal_alloc (size=size@entry=402653184, f=f@entry=0x0, s=s@entry=0, n=n@entry=1) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/ggc-page.c:1400 #3 0x0000000000bbd629 in ggc_internal_alloc (s=402653184) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/ggc.h:130 #4 ggc_realloc (x=0x7fff3c79e000, size=size@entry=402653184) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/ggc-common.c:152 #5 0x0000000000b03fa9 in emit_status::ensure_regno_capacity (this=this@entry=0x243c920 <x_rtl+64>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/emit-rtl.c:1229 #6 0x0000000000b04046 in gen_reg_rtx (mode=mode@entry=E_DImode) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/emit-rtl.c:1202 #7 0x0000000000b1bd07 in force_reg (x=0x7ffff750f9b0, mode=E_DImode) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/explow.c:686 #8 force_reg (mode=E_DImode, x=0x7ffff750f9b0) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/explow.c:666 #9 0x0000000000b1d9ab in use_anchored_address (x=0x7ffea54bade0) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/explow.c:606 #10 use_anchored_address (x=0x7ffea54bade0) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/explow.c:559 #11 0x0000000000b40982 in expand_expr_real_1 (exp=<optimized out>, target=<optimized out>, tmode=E_TImode, modifier=EXPAND_NORMAL, alt_rtl=0x0, inner_reference_p=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:10301 #12 0x0000000000b411d4 in expand_expr_real_1 (exp=0x7ffff74ff000, target=<optimized out>, tmode=E_TImode, modifier=EXPAND_NORMAL, alt_rtl=0x0, inner_reference_p=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/gimple.h:2597 #13 0x0000000000b3a764 in expand_expr (modifier=EXPAND_NORMAL, mode=E_TImode, target=0x0, exp=0x7ffff74ff000) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.h:282 #14 expand_expr_real_2 (ops=<optimized out>, target=<optimized out>, tmode=<optimized out>, modifier=EXPAND_NORMAL) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:8802 #15 0x0000000000b41bdb in expand_expr_real_1 (exp=0x7ffff74ff438, target=<optimized out>, tmode=E_VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0, inner_reference_p=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:10210 #16 0x0000000000b4ba55 in expand_expr (modifier=EXPAND_NORMAL, mode=E_VOIDmode, target=<optimized out>, exp=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.h:282 #17 expand_operands (exp0=exp0@entry=0x7ffff74ff438, exp1=exp1@entry=0x7ffff760cd38, target=target@entry=0x0, op0=op0@entry=0x7ffffffef370, op1=op1@entry=0x7ffffffef378, modifier=modifier@entry=EXPAND_NORMAL) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:8110 #18 0x00000000012996e0 in aarch64_gen_ccmp_next (prep_seq=prep_seq@entry=0x7ffffffef558, gen_seq=gen_seq@entry=0x7ffffffef560, prev=prev@entry=0x7ffea54badc8, cmp_code=86, treeop0=0x7ffff74ff438, treeop1=0x7ffff760cd38, bit_code=66) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/config/aarch64/aarch64.c:21990 #19 0x0000000001937fb5 in expand_ccmp_next (op=op@entry=0x7ffff74ff3a8, code=code@entry=BIT_AND_EXPR, prev=prev@entry=0x7ffea54badc8, prep_seq=0x7ffffffef558, gen_seq=0x7ffffffef560) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/ccmp.c:172 #20 0x00000000019383b8 in expand_ccmp_expr_1 (g=<optimized out>, prep_seq=0x7ffffffef5c8, gen_seq=0x7ffffffef5d0) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/ccmp.c:243 #21 0x00000000019384d5 in expand_ccmp_expr (g=g@entry=0x7ffff7604420, mode=mode@entry=E_QImode) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/ccmp.c:295 #22 0x0000000000b4113c in expand_expr_real_1 (exp=0x7ffff74ff360, target=<optimized out>, tmode=E_TImode, modifier=EXPAND_NORMAL, alt_rtl=0x0, inner_reference_p=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:10201 #23 0x0000000000b3a764 in expand_expr (modifier=EXPAND_NORMAL, mode=E_TImode, target=0x0, exp=0x7ffff74ff360) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.h:282 #24 expand_expr_real_2 (ops=<optimized out>, target=<optimized out>, tmode=<optimized out>, modifier=EXPAND_NORMAL) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:8802 #25 0x0000000000b41bdb in expand_expr_real_1 (exp=0x7ffff760ca68, target=<optimized out>, tmode=E_VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0, inner_reference_p=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:10210 #26 0x0000000000b4ba55 in expand_expr (modifier=EXPAND_NORMAL, mode=E_VOIDmode, target=<optimized out>, exp=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.h:282 #27 expand_operands (exp0=exp0@entry=0x7ffff760ca68, exp1=exp1@entry=0x7ffff760cd38, target=target@entry=0x0, op0=op0@entry=0x7fffffff00d0, op1=op1@entry=0x7fffffff00d8, modifier=modifier@entry=EXPAND_NORMAL) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:8110 #28 0x0000000001299b0d in aarch64_gen_ccmp_first (prep_seq=0x7fffffff0208, gen_seq=0x7fffffff0210, code=86, treeop0=0x7ffff760ca68, treeop1=0x7ffff760cd38) <…> (gdb) where -25 #155 0x0000000001937fb5 in expand_ccmp_next (op=op@entry=0x7ffff760cb40, code=code@entry=BIT_AND_EXPR, prev=prev@entry=0x7ffeee9b5e88, prep_seq=0x7fffffffc948, gen_seq=0x7fffffffc950) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/ccmp.c:172 #156 0x00000000019383b8 in expand_ccmp_expr_1 (g=<optimized out>, prep_seq=0x7fffffffc9b8, gen_seq=0x7fffffffc9c0) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/ccmp.c:243 #157 0x00000000019384d5 in expand_ccmp_expr (g=g@entry=0x7ffff7604268, mode=mode@entry=E_QImode) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/ccmp.c:295 #158 0x0000000000b4113c in expand_expr_real_1 (exp=0x7ffff760caf8, target=<optimized out>, tmode=E_SImode, modifier=EXPAND_NORMAL, alt_rtl=0x0, inner_reference_p=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:10201 #159 0x0000000000b3a764 in expand_expr (modifier=EXPAND_NORMAL, mode=E_SImode, target=0x0, exp=0x7ffff760caf8) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.h:282 #160 expand_expr_real_2 (ops=<optimized out>, target=<optimized out>, tmode=<optimized out>, modifier=EXPAND_NORMAL) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:8802 #161 0x0000000000b41bdb in expand_expr_real_1 (exp=0x7ffff74ff048, target=<optimized out>, tmode=E_SImode, modifier=EXPAND_NORMAL, alt_rtl=0x7fffffffd4b0, inner_reference_p=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:10210 #162 0x0000000000b4ca46 in store_expr (exp=0x7ffff74ff048, target=0x7ffff75122e8, call_param_p=<optimized out>, nontemporal=<optimized out>, reverse=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:5886 #163 0x0000000000b4ed61 in expand_assignment (to=0x7ffff7ffb2d0, from=0x7ffff74ff048, nontemporal=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/expr.c:5622 #164 0x0000000000a15108 in expand_gimple_stmt_1 (stmt=0x7ffff74c8d20) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/cfgexpand.c:3910 #165 expand_gimple_stmt (stmt=0x7ffff74c8d20) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/cfgexpand.c:4008 #166 0x0000000000a1b41b in expand_gimple_basic_block (bb=<optimized out>, disable_tail_calls=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/cfgexpand.c:6045 #167 0x0000000000a1cfc0 in (anonymous namespace)::pass_expand::execute (this=<optimized out>, fun=0x7ffff74f1000) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/cfgexpand.c:6729 #168 0x0000000000df80d8 in execute_one_pass (pass=0x25ca2a0) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/passes.c:2567 #169 0x0000000000df8ac3 in execute_pass_list_1 (pass=0x25ca2a0) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/passes.c:2656 #170 0x0000000000df8b02 in execute_pass_list (fn=0x7ffff74f1000, pass=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/passes.c:2667 #171 0x0000000000a550e5 in cgraph_node::expand (this=0x7ffff74f2000) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/context.h:48 #172 0x0000000000a5675f in expand_all_functions () at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/cgraphunit.c:1998 #173 symbol_table::compile (this=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/cgraphunit.c:2362 #174 symbol_table::compile (this=<optimized out>) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/cgraphunit.c:2273 #175 0x0000000000a594a4 in symbol_table::finalize_compilation_unit (this=0x7ffff7605000) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/cgraphunit.c:2543 #176 0x0000000000ede631 in compile_file () at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/toplev.c:482 #177 0x00000000008907a3 in do_compile () at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/toplev.c:2201 #178 toplev::main (this=this@entry=0x7fffffffdb36, argc=<optimized out>, argc@entry=13, argv=<optimized out>, argv@entry=0x7fffffffdc48) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/toplev.c:2340 #179 0x0000000000893331 in main (argc=13, argv=0x7fffffffdc48) at /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210321/work/gcc-11-20210321/gcc/main.c:39