mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-11 11:50:59 +08:00
re PR debug/41063 (ICE in output_die)
gcc/ChangeLog: PR debug/41063 * dwarf2out.c (gen_type_die_with_usage): Use proper context for struct/union/enum types local to a function. gcc/testsuite/ChangeLog: PR debug/41063 * g++.dg/debug/dwarf2/pr41063.C: New test. From-SVN: r151185
This commit is contained in:
parent
059a5f9f1c
commit
e6a83a8e9e
@ -15573,6 +15573,15 @@ gen_type_die_with_usage (tree type, dw_die_ref context_die,
|
||||
context_die = lookup_type_die (TYPE_CONTEXT (type));
|
||||
need_pop = 1;
|
||||
}
|
||||
else if (TYPE_CONTEXT (type) != NULL_TREE
|
||||
&& (TREE_CODE (TYPE_CONTEXT (type)) == FUNCTION_DECL))
|
||||
{
|
||||
/* If this type is local to a function that hasn't been written
|
||||
out yet, use a NULL context for now; it will be fixed up in
|
||||
decls_for_scope. */
|
||||
context_die = lookup_decl_die (TYPE_CONTEXT (type));
|
||||
need_pop = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
context_die = declare_in_namespace (type, context_die);
|
||||
|
20
gcc/testsuite/g++.dg/debug/dwarf2/pr41063.C
Normal file
20
gcc/testsuite/g++.dg/debug/dwarf2/pr41063.C
Normal file
@ -0,0 +1,20 @@
|
||||
// Contributed by Cary Coutant <ccoutant@google.com>
|
||||
// Origin: PR debug/41063
|
||||
// { dg-do compile }
|
||||
|
||||
struct A {
|
||||
virtual void run();
|
||||
};
|
||||
|
||||
void test() {
|
||||
struct B : public A {
|
||||
void run() {
|
||||
struct C : public A {
|
||||
C() { }
|
||||
B *b_;
|
||||
};
|
||||
C c;
|
||||
}
|
||||
};
|
||||
B b;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user