gcc/testsuite/
PR target/65249
* g++.dg/torture/pr65249.C: New.
From-SVN: r221256
+2015-03-07 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/65249
+ * g++.dg/torture/pr65249.C: New.
+
2015-03-07 H.J. Lu <hongjiu.lu@intel.com>
* gcc.target/i386/pr45685.c (uint64_t): Replace long with long
--- /dev/null
+// { dg-do compile }
+// { dg-additional-options "-fPIC -fstack-protector-strong" { target fpic } }
+// { dg-require-effective-target fstack_protector }
+
+struct struct0
+{
+ struct0 (void(*)());
+};
+
+int func5 (int* ptr);
+void func3 (int*, struct0*);
+
+inline void
+func4 (int* a, void (*b)())
+{
+ if (func5 (a) != 2)
+ {
+ struct0 f (b);
+ func3(a, &f);
+ }
+}
+
+struct struct1
+{
+ const void* val0;
+ const void* val1;
+};
+
+void* func3 (const void*);
+
+static const void* gvar1 = 0;
+static const void* gvar2 = 0;
+static int gvar0 = 0;
+
+void
+func0 (void)
+{
+ gvar2 = func3 (gvar1);
+}
+
+inline void
+func1 (void)
+{
+ func4 (&gvar0, &func0);
+}
+
+struct1 func2 (void)
+{
+ func1 ();
+ struct1 s;
+ s.val0 = gvar1;
+ s.val1 = gvar2;
+ return s;
+}