re PR rtl-optimization/6086 (Reload misoptimizes DImode PREINC on PPC)
authorFranz Sirl <Franz.Sirl-kernel@lauterbach.com>
Sun, 7 Apr 2002 18:23:19 +0000 (18:23 +0000)
committerFranz Sirl <sirl@gcc.gnu.org>
Sun, 7 Apr 2002 18:23:19 +0000 (18:23 +0000)
2002-04-07  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

PR optimization/6086
* g++.dg/opt/preinc1.C: New test.

From-SVN: r52001

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

index c71c02ebbe2f5463264a80d4758ba391315956ab..b614d54f581481a0a1716e479dada5d757edc19f 100644 (file)
@@ -1,3 +1,8 @@
+2002-04-07  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
+
+       PR optimization/6086
+       * g++.dg/opt/preinc1.C: New test.
+
 2002-04-06  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/5571
diff --git a/gcc/testsuite/g++.dg/opt/preinc1.C b/gcc/testsuite/g++.dg/opt/preinc1.C
new file mode 100644 (file)
index 0000000..89a0116
--- /dev/null
@@ -0,0 +1,59 @@
+// PR optimization/6086
+// { dg-do run }
+// { dg-options "-O" }
+extern "C" void abort (void);
+
+struct A
+{
+  A (int x, int y);
+  int a, b;
+  int foo () { return a; }
+  int bar () { return b; }
+};
+
+struct B
+{
+  virtual ~B ();
+  virtual A baz () const;
+};
+
+struct C
+{
+  A foo () const;
+  B *c;
+};
+
+A C::foo () const
+{
+  int x, y;
+  x = c->baz ().foo ();
+  y = c->baz ().bar ();
+  return A (x, y);
+}
+
+A B::baz () const
+{
+  return A (4, 8);
+}
+
+A::A (int x, int y)
+{
+  a = x;
+  b = y;
+}
+
+B::~B ()
+{
+}
+
+int
+main ()
+{
+  C the_c;
+  B the_b;
+  the_c.c = &the_b;
+  if (the_c.foo().a != 4)
+    abort ();
+  return 0;
+}