aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2009-08-05 14:45:15 +0000
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2009-08-05 14:45:15 +0000
commite7068eb8d4db8d70a2fc82c9d2a7ac288c770b1d (patch)
treea5018ab8e3c7cbce69827f49e7001d2a18d2bf9b
parent7e6684bf1d039f6c6fa383d6d44334d63618c588 (diff)
2009-07-28 H.J. Lu <hongjiu.lu@intel.com>
Backport from mainline: 2009-07-30 Martin Jambor <mjambor@suse.cz> PR tree-optimization/40570 * gcc.c-torture/compile/pr40570.c: New test. 2009-07-29 Richard Guenther <rguenther@suse.de> PR c++/40834 * g++.dg/torture/pr40834.C: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch@150487 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog13
-rw-r--r--gcc/testsuite/g++.dg/torture/pr40834.C52
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr40570.c22
3 files changed, 87 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 53eca796403..5b7bb6dae2b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,16 @@
+2009-07-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline:
+ 2009-07-30 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/40570
+ * gcc.c-torture/compile/pr40570.c: New test.
+
+ 2009-07-29 Richard Guenther <rguenther@suse.de>
+
+ PR c++/40834
+ * g++.dg/torture/pr40834.C: New testcase.
+
2009-08-05 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/40924
diff --git a/gcc/testsuite/g++.dg/torture/pr40834.C b/gcc/testsuite/g++.dg/torture/pr40834.C
new file mode 100644
index 00000000000..67d3028532a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr40834.C
@@ -0,0 +1,52 @@
+/* { dg-do run } */
+
+extern "C" void abort (void);
+class XalanDOMString
+{
+public:
+ int y;
+};
+
+class XObject
+{
+public:
+ const XalanDOMString& str() const { return x; }
+ XalanDOMString x;
+};
+
+class XObjectPtr
+{
+public:
+ XObjectPtr(const XObjectPtr& theSource)
+ {
+ m_xobjectPtr = theSource.m_xobjectPtr;
+ }
+ const XObject* operator->() const
+ {
+ return m_xobjectPtr;
+ };
+ XObjectPtr(XObject *p) { m_xobjectPtr = p; }
+ XObject* m_xobjectPtr;
+};
+
+class FunctionSubstringBefore
+{
+public:
+ int execute( const XObjectPtr arg1) const
+ {
+ const XalanDOMString& theFirstString = arg1->str();
+ return theFirstString.y;
+ }
+};
+
+int
+main ()
+{
+ XObject x;
+ XObjectPtr y (&x);
+ x.x.y = -1;
+ FunctionSubstringBefore z;
+ if (z.execute (y) != -1)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr40570.c b/gcc/testsuite/gcc.c-torture/compile/pr40570.c
new file mode 100644
index 00000000000..7c3f4d83b2e
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr40570.c
@@ -0,0 +1,22 @@
+extern void anything(int);
+
+static int foo(int i);
+
+static int bar(int i) { foo(i); }
+
+extern int j;
+
+static int foo(int i)
+{
+ if (j)
+ anything(j);
+ return bar(i);
+}
+
+int baz()
+{
+ foo(0);
+ if (baz())
+ return 1;
+ return 0;
+}