===================================================================
@@ -0,0 +1,35 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fipa-pta" } */
+
+struct A {
+ A() {ptr=&b;}
+ A(const A &a) {ptr = &b;}
+ void test() { if (ptr != &b) __builtin_abort ();}
+ int b;
+ int *ptr;
+};
+
+A test1(A a)
+{
+ a.test();
+ return a;
+}
+A test2(A a)
+{
+ a.test();
+ return a;
+}
+__attribute__ ((noinline))
+static void
+test_me (A (*t)(A))
+{
+ struct A a, b=t(a);
+ b.test ();
+}
+int
+main()
+{
+ test_me (test1);
+ test_me (test2);
+ return 0;
+}