mirror of git://gcc.gnu.org/git/gcc.git
re PR debug/77947 (ICE with -g and -O2 in strip_naming_typedef)
2016-10-12 Richard Biener <rguenther@suse.de> PR debug/77947 * cgraphunit.c (analyze_functions): Preserve cgraph nodes function context. * g++.dg/torture/pr77947.C: New testcase. From-SVN: r241053
This commit is contained in:
parent
05f1a54316
commit
0bfd099c35
|
|
@ -1,3 +1,9 @@
|
||||||
|
2016-10-12 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR debug/77947
|
||||||
|
* cgraphunit.c (analyze_functions): Preserve cgraph nodes
|
||||||
|
function context.
|
||||||
|
|
||||||
2016-10-12 Thomas Schwinge <thomas@codesourcery.com>
|
2016-10-12 Thomas Schwinge <thomas@codesourcery.com>
|
||||||
|
|
||||||
* lto-streamer.c: Fix LTO_STREAMER_DEBUG build.
|
* lto-streamer.c: Fix LTO_STREAMER_DEBUG build.
|
||||||
|
|
|
||||||
|
|
@ -1126,6 +1126,13 @@ analyze_functions (bool first_time)
|
||||||
= cgraph_node::get_create (DECL_ABSTRACT_ORIGIN (decl));
|
= cgraph_node::get_create (DECL_ABSTRACT_ORIGIN (decl));
|
||||||
origin_node->used_as_abstract_origin = true;
|
origin_node->used_as_abstract_origin = true;
|
||||||
}
|
}
|
||||||
|
/* Preserve a functions function context node. It will
|
||||||
|
later be needed to output debug info. */
|
||||||
|
if (tree fn = decl_function_context (decl))
|
||||||
|
{
|
||||||
|
cgraph_node *origin_node = cgraph_node::get_create (fn);
|
||||||
|
enqueue_node (origin_node);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-10-12 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR debug/77947
|
||||||
|
* g++.dg/torture/pr77947.C: New testcase.
|
||||||
|
|
||||||
2016-10-12 Pierre-Marie de Rodat <derodat@adacore.com>
|
2016-10-12 Pierre-Marie de Rodat <derodat@adacore.com>
|
||||||
|
|
||||||
* gnat.dg/debug8.adb: New testcase.
|
* gnat.dg/debug8.adb: New testcase.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
// { dg-do compile }
|
||||||
|
// { dg-additional-options "-g" }
|
||||||
|
|
||||||
|
class A
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool m_fn1 () const = 0;
|
||||||
|
};
|
||||||
|
class B
|
||||||
|
{
|
||||||
|
const A *m_fn2 () const;
|
||||||
|
};
|
||||||
|
inline const A *
|
||||||
|
B::m_fn2 () const
|
||||||
|
{
|
||||||
|
class C : A
|
||||||
|
{
|
||||||
|
bool
|
||||||
|
m_fn1 () const
|
||||||
|
{
|
||||||
|
}
|
||||||
|
C () {}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
void
|
||||||
|
fn1 (A &p1)
|
||||||
|
{
|
||||||
|
p1.m_fn1 ();
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue