diff options
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.C | 43 |
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)); +} + + + |