[Bug debug/93951] New: ICE with '-flto -femit-struct-debug-baseonly'

guillaume at morinfr dot org gcc-bugzilla@gcc.gnu.org
Wed Feb 26 15:56:00 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93951

            Bug ID: 93951
           Summary: ICE with '-flto -femit-struct-debug-baseonly'
           Product: gcc
           Version: 9.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
          Assignee: unassigned at gcc dot gnu.org
          Reporter: guillaume at morinfr dot org
  Target Milestone: ---

Created attachment 47917
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47917&action=edit
reproducer

This program ICEs with '-g -flto -femit-struct-debug-baseonly -std=gnu++2a'
with gcc 9.2 and 8.3 (seems to work on the trunk). Remove any of -g, -flto,
-femit-struct-debug-only and it builds fine.

#include <variant>

struct S1 {
    bool fct() const;
};

struct S2 {
    bool fct() const;
};

struct V {
    bool visit() const {
        auto visitor = [](auto&& s) -> bool { return s.fct(); };
        return std::visit(visitor, v);
    }

    using Variant = std::variant<S1, S2>;
    Variant v;
};

#0  htab_hash_string (p=0x0) at ../../src/libiberty/hashtab.c:838
#1  0x000000000085acad in external_ref_hasher::hash (r=<synthetic pointer>) at
../../src/gcc/dwarf2out.c:8917
#2  hash_table<external_ref_hasher, false, xcallocator>::find_slot
(insert=INSERT, value=<optimized out>, this=0x206fa40) at
../../src/gcc/hash-table.h:423
#3  lookup_external_ref (map=map@entry=0x206fa40, die=0x7ffff58f93c0) at
../../src/gcc/dwarf2out.c:8945
#4  0x000000000085ad6f in optimize_external_refs_1 (die=0x7ffff58f9370,
map=0x206fa40) at ../../src/gcc/dwarf2out.c:8983
#5  0x000000000085ad40 in optimize_external_refs_1 (die=0x7ffff58f9320,
map=0x206fa40) at ../../src/gcc/dwarf2out.c:8987
#6  0x000000000085ad40 in optimize_external_refs_1 (die=0x7ffff58f92d0,
map=0x206fa40) at ../../src/gcc/dwarf2out.c:8987
#7  0x000000000085ae59 in optimize_external_refs (die=die@entry=0x7ffff58f92d0)
at ../../src/gcc/dwarf2out.c:9036
#8  0x0000000000860ac8 in output_comp_unit (die=0x7ffff58f92d0,
output_if_empty=<optimized out>, dwo_id=0x0) at ../../src/gcc/dwarf2out.c:11055
#9  0x000000000088caa4 in dwarf2out_early_finish (filename=0x7fffffffd76d
"g++9_lto_crash.cc") at ../../src/gcc/dwarf2out.c:32264
#10 0x0000000000801025 in symbol_table::finalize_compilation_unit
(this=0x7ffff665f100) at ../../src/gcc/cgraphunit.c:2860
#11 0x0000000000b69cbd in compile_file () at ../../src/gcc/toplev.c:481


More information about the Gcc-bugs mailing list