https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96058
Bug ID: 96058 Summary: ICE in c_getstr at gcc/fold-const.c:15475 Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: msebor at gcc dot gnu.org Target Milestone: --- I see the ICE in a LTRANS when using LTO on chrome. So it's unlikely I can create a reduced-test case: I'm using GCC 10.1 release: gcc --version gcc (SUSE Linux) 10.1.1 20200625 [revision c91e43e9363bd119a695d64505f96539fa451bf2] Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ /usr/lib64/gcc/x86_64-suse-linux/10/lto1 -fltrans chrome.ltrans81.o -quiet during GIMPLE pass: strlen ../../chrome/browser/ui/views/sharing/sharing_icon_view.cc: In member function ‘GetVectorIconBadge’: ../../chrome/browser/ui/views/sharing/sharing_icon_view.cc:146: internal compiler error: in tree_to_uhwi, at tree.h:4519 0x666aa8 tree_to_uhwi(tree_node const*) ../../gcc/tree.h:4519 0x666aa8 c_getstr(tree_node*, unsigned long*) ../../gcc/fold-const.c:15475 0xf54bf2 get_stridx ../../gcc/tree-ssa-strlen.c:537 0xde690d strlen_dom_walker::before_dom_children(basic_block_def*) ../../gcc/tree-ssa-strlen.c:5832 0xde5e63 dom_walker::walk(basic_block_def*) ../../gcc/domwalk.c:309 0x1134468 printf_strlen_execute ../../gcc/tree-ssa-strlen.c:5922 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://bugs.opensuse.org/> for instructions. (gdb) bt #0 c_getstr (src=0x7fffeffb0e28, strlen=0x0) at ../../gcc/fold-const.c:15475 #1 0x0000000000f54bf3 in get_stridx (exp=0x7fffeffa6480, offrng=0x0, rvals=0x0) at ../../gcc/tree-ssa-strlen.c:537 #2 0x0000000000de690e in strlen_dom_walker::before_dom_children (this=0x7fffffffdfa0, bb=0x7fffeffb70d0) at ../../gcc/gimple.h:4539 #3 0x0000000000de5e64 in dom_walker::walk (this=0x7fffffffdfa0, bb=0x7fffeffb70d0) at ../../gcc/domwalk.c:309 #4 0x0000000001134469 in (anonymous namespace)::printf_strlen_execute (fun=0x7ffff0988bb0, warn_only=<optimized out>) at ../../gcc/tree-ssa-strlen.c:5922 #5 0x0000000000d49063 in execute_one_pass (pass=0x1d00a50) at ../../gcc/passes.c:2502 #6 0x0000000000d7e825 in execute_pass_list_1 (pass=0x1d00a50) at ../../gcc/passes.c:2590 #7 execute_pass_list_1 (pass=0x1cfe680) at ../../gcc/passes.c:2591 #8 execute_pass_list (fn=0x7ffff0988bb0, pass=<optimized out>) at ../../gcc/passes.c:2601 #9 0x000000000111bc42 in cgraph_node::expand (this=0x7ffff6fbee10) at ../../gcc/cgraphunit.c:2300 #10 0x000000000110f6a6 in expand_all_functions () at ../../gcc/cgraphunit.c:2471 #11 symbol_table::compile (this=0x7ffff7754100) at ../../gcc/cgraphunit.c:2822 #12 0x00000000010fdeab in lto_main () at ../../gcc/lto/lto.c:653 #13 0x00000000010fa1be in compile_file () at ../../gcc/toplev.c:458 #14 0x00000000010c7ffa in do_compile () at ../../gcc/toplev.c:2278 #15 toplev::main (this=this@entry=0x7fffffffe23e, argc=<optimized out>, argv=<optimized out>) at ../../gcc/toplev.c:2417 #16 0x00000000010c73cc in main (argc=<optimized out>, argv=<optimized out>) at ../../gcc/main.c:39 (gdb) p debug_tree(exp) No symbol "exp" in current context. (gdb) p debug_tree(src) <string_cst 0x7fffeffb0e28 type <array_type 0x7fffeff55888 type <record_type 0x7ffff7701e70 VectorIcon readonly cxx-odr-p VOID align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff4460000 context <namespace_decl 0x7ffff7581390 gfx> pointer_to_this <pointer_type 0x7ffff7701f18> reference_to_this <reference_type 0x7ffff5ddfb28>> BLK align:8 warn_if_not_align:0 symtab:0 alias-set -1 structural-equality domain <integer_type 0x7fffeff55738 type <integer_type 0x7ffff7766000 sizetype> DI size <integer_cst 0x7ffff7751bb8 constant 64> unit-size <integer_cst 0x7ffff7751bd0 constant 8> align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7fffeff55738 precision:64 min <integer_cst 0x7ffff7751be8 0> max <integer_cst 0x7ffff76ba498 23>>> readonly constant static "\000"> $1 = void (gdb) p debug_tree(elttype) No symbol "elttype" in current context. (gdb) p debug_tree(eltype) <record_type 0x7ffff7701e70 VectorIcon readonly cxx-odr-p VOID align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff4460000 context <namespace_decl 0x7ffff7581390 gfx> pointer_to_this <pointer_type 0x7ffff7701f18> reference_to_this <reference_type 0x7ffff5ddfb28>> $2 = void (gdb) p debug_generic_expr (exp) &kNoneIcon (gdb) p debug_function(current_function_decl, 0) GetVectorIconBadge (const struct SharingIconView * const this) { bool _1; const struct VectorIcon * _2; <bb 2> [local count: 1073741824]: _1 = this_4(D)->should_show_error_; if (_1 != 0) goto <bb 3>; [50.00%] else goto <bb 4>; [50.00%] <bb 3> [local count: 536870912]: <bb 4> [local count: 1073741824]: # _2 = PHI <&kNoneIcon(2), &kBlockedBadgeIcon(3)> return _2; } Will you be Martin able to fix it with the provided info?