diff options
author | jamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-05-02 19:50:37 +0000 |
---|---|---|
committer | jamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-05-02 19:50:37 +0000 |
commit | ad5f1481145166ac9fb2d18cba1a062396b56a0f (patch) | |
tree | fc6987ad123a3e9be2b2a34bcdf17cccaad41c6c /gcc | |
parent | b920f7259ba7f9471615d5568ce8844c546b1701 (diff) | |
download | gcc-ad5f1481145166ac9fb2d18cba1a062396b56a0f.tar.gz |
2012-05-02 Martin Jambor <mjambor@suse.cz>
PR lto/52605
* dwarf2out.c (dwarf2out_decl): Only lookup die representing context
of a variable when the contect is a function.
* gcc/testsuite/g++.dg/lto/pr52605_0.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187063 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/pr52605_0.C | 39 |
4 files changed, 53 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7611f01ad35..8367cb6af25 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-05-02 Martin Jambor <mjambor@suse.cz> + + PR lto/52605 + * dwarf2out.c (dwarf2out_decl): Only lookup die representing context + of a variable when the contect is a function. + 2012-05-02 Michael Matz <matz@suse.de> * coretypes.h (gimple_seq, const_gimple_seq): Typedef as gimple. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 8bbf95477a7..10a53894f63 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -19122,7 +19122,9 @@ dwarf2out_decl (tree decl) return; /* For local statics lookup proper context die. */ - if (TREE_STATIC (decl) && decl_function_context (decl)) + if (TREE_STATIC (decl) + && DECL_CONTEXT (decl) + && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL) context_die = lookup_decl_die (DECL_CONTEXT (decl)); /* If we are in terse mode, don't generate any DIEs to represent any diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c447969966b..4f831b1cecf 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-05-02 Martin Jambor <mjambor@suse.cz> + + PR lto/52605 + * g++.dg/lto/pr52605_0.C: New test. + 2012-05-02 Kirill Yukhin <kirill.yukhin@intel.com> * gcc.target/i386/hle-cmpxchg-acq-1.c: New. diff --git a/gcc/testsuite/g++.dg/lto/pr52605_0.C b/gcc/testsuite/g++.dg/lto/pr52605_0.C new file mode 100644 index 00000000000..22540abf9e4 --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/pr52605_0.C @@ -0,0 +1,39 @@ +// { dg-lto-do link } +// { dg-lto-options {{-flto -g}} } + +extern "C" void abort (void); + +class A +{ +public: + virtual int foo (int i); +}; + +int A::foo (int i) +{ + return i + 1; +} + +int __attribute__ ((noinline,noclone)) get_input(void) +{ + return 1; +} + +int main (int argc, char *argv[]) +{ + + class B : public A + { + public: + int bar (int i) + { + return foo (i) + 2; + } + }; + class B b; + + if (b.bar (get_input ()) != 4) + abort (); + return 0; +} + |