aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/ipa/pr67056.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg/ipa/pr67056.C')
-rw-r--r--gcc/testsuite/g++.dg/ipa/pr67056.C39
1 files changed, 39 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/ipa/pr67056.C b/gcc/testsuite/g++.dg/ipa/pr67056.C
new file mode 100644
index 00000000000..f47323b6e5d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/pr67056.C
@@ -0,0 +1,39 @@
+/* { dg-do run } */
+/* { dg-options "-std=c++11 -O3 -fdump-ipa-cp" } */
+/* { dg-additional-options "-fPIC" { target fpic } } */
+#include <memory>
+
+class EmptyClass {
+public:
+ EmptyClass();
+};
+
+EmptyClass::EmptyClass() {
+}
+
+class CompositeClass {
+public:
+ CompositeClass() {}
+ virtual ~CompositeClass() {}
+ EmptyClass object;
+ bool bool1;
+ bool bool2;
+};
+
+bool boolFunc() {
+ return true;
+}
+
+static bool staticBoolFunc(CompositeClass * ptr) {
+ std::unique_ptr<CompositeClass> up(ptr);
+ (void)up;
+
+ return boolFunc();
+}
+
+int main(int, char **) {
+ staticBoolFunc(new CompositeClass);
+ return 0;
+}
+
+/* { dg-final { scan-ipa-dump "Speculative outer type:struct CompositeClass" "cp" } } */