2010-07-13 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Jul 2010 13:31:26 +0000 (13:31 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Jul 2010 13:31:26 +0000 (13:31 +0000)
PR tree-optimization/36960
* g++.dg/torture/pr36960.C: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162141 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/torture/pr36960.C [new file with mode: 0644]

index 186a4c6..fe67559 100644 (file)
@@ -1,3 +1,8 @@
+2010-07-13  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/36960
+       * g++.dg/torture/pr36960.C: New testcase.
+
 2010-07-13  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/44908
diff --git a/gcc/testsuite/g++.dg/torture/pr36960.C b/gcc/testsuite/g++.dg/torture/pr36960.C
new file mode 100644 (file)
index 0000000..280a675
--- /dev/null
@@ -0,0 +1,22 @@
+// { dg-do run }
+
+struct Lower {
+    const int& ref;
+    Lower(const int& ref) : ref(ref) { }
+};
+struct Middle : public virtual Lower {
+    Middle(const int& ref) : Lower(ref) { }
+};
+struct Upper : public Middle {
+    Upper(const int& ref) : Lower(ref), Middle(ref) { }
+    int get() { return ref; }
+};
+extern "C" void abort (void);
+int main()
+{
+  int i = 0;
+  Upper upper(i);
+  if (upper.get() != 0)
+    abort ();
+  return 0;
+}