diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/vect')
-rw-r--r-- | gcc/testsuite/g++.dg/vect/pr21734_1.cc | 20 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/vect/pr21734_2.cc | 16 |
2 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/vect/pr21734_1.cc b/gcc/testsuite/g++.dg/vect/pr21734_1.cc new file mode 100644 index 00000000000..c65d9fcaa81 --- /dev/null +++ b/gcc/testsuite/g++.dg/vect/pr21734_1.cc @@ -0,0 +1,20 @@ +/* { dg-do compile } */ + +struct A +{ + int a[4]; + int& operator[](int i) { return a[i]; } +}; + +struct B : public A +{ + int& operator[](int i) { return A::operator[](i); } +}; + +void foo(B &b) +{ + for (int i=0; i<4; ++i) + b[i] = 0; +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/g++.dg/vect/pr21734_2.cc b/gcc/testsuite/g++.dg/vect/pr21734_2.cc new file mode 100644 index 00000000000..58efedf18f3 --- /dev/null +++ b/gcc/testsuite/g++.dg/vect/pr21734_2.cc @@ -0,0 +1,16 @@ +/* { dg-do compile } */ + +struct A +{ + int a[4]; + int* operator[](int i) { return &a[i]; } +}; + +void foo(A a1, A &a2) +{ + a1[1][1]=0; + for (int i=0; i<4; ++i) + a2.a[i]=0; +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ |