summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>2012-05-02 19:50:37 +0000
committerjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>2012-05-02 19:50:37 +0000
commitad5f1481145166ac9fb2d18cba1a062396b56a0f (patch)
treefc6987ad123a3e9be2b2a34bcdf17cccaad41c6c /gcc
parentb920f7259ba7f9471615d5568ce8844c546b1701 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/dwarf2out.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/lto/pr52605_0.C39
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;
+}
+