aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/pr22279.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/pr22279.C')
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/pr22279.C43
1 files changed, 43 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/pr22279.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/pr22279.C
new file mode 100644
index 000000000..0e17f08ec
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/pr22279.C
@@ -0,0 +1,43 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+struct string
+{
+ long long _M_p;
+ long long i;
+ string();
+ int begin();
+ int end();
+ string(int, int);
+};
+struct symbol
+{
+ int type;
+ string name;
+ long long raw_name;
+ long long demangled_name;
+ long long version_name;
+ int version_status;
+ int status;
+ void init();
+};
+void symbol::init() { name = string(); }
+struct pair
+{
+ symbol first;
+ symbol second;
+ pair(const symbol& __a, const symbol& __b) : first(__a), second(__b) { }
+};
+struct vector
+{
+ void push_back(const pair& __x);
+};
+/* This ends up with two RHS deref copies, and we need to get the offsets right on them. */
+void f(vector incompatible)
+{
+ symbol base;
+ incompatible.push_back(pair(base, base));
+}
+
+
+