annotate gcc/testsuite/g++.dg/plugin/self-assign-test-2.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // Test the self-assignemnt detection plugin without checking of operator-eq.
kono
parents:
diff changeset
2 // { dg-do compile }
kono
parents:
diff changeset
3 // { dg-options "-O -fplugin-arg-selfassign-no-check-operator-eq" }
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 class Foo {
kono
parents:
diff changeset
6 private:
kono
parents:
diff changeset
7 int a_;
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 public:
kono
parents:
diff changeset
10 Foo() : a_(a_) {} // { dg-warning "assigned to itself" }
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 void setA(int a) {
kono
parents:
diff changeset
13 a_ = a_; // { dg-warning "assigned to itself" }
kono
parents:
diff changeset
14 }
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 void operator=(Foo& rhs) {
kono
parents:
diff changeset
17 this->a_ = rhs.a_;
kono
parents:
diff changeset
18 }
kono
parents:
diff changeset
19 };
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 struct Bar {
kono
parents:
diff changeset
22 int b_;
kono
parents:
diff changeset
23 int c_;
kono
parents:
diff changeset
24 };
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 int g = g; // { dg-warning "assigned to itself" }
kono
parents:
diff changeset
27 Foo foo = foo; // { dg-warning "assigned to itself" }
kono
parents:
diff changeset
28
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
29 void func()
111
kono
parents:
diff changeset
30 {
kono
parents:
diff changeset
31 Bar *bar1, bar2;
kono
parents:
diff changeset
32 Foo local_foo;
kono
parents:
diff changeset
33 int x = x; // { dg-warning "assigned to itself" }
kono
parents:
diff changeset
34 static int y = y; // { dg-warning "assigned to itself" }
kono
parents:
diff changeset
35 float *f;
kono
parents:
diff changeset
36 Bar bar_array[5];
kono
parents:
diff changeset
37 char n;
kono
parents:
diff changeset
38 int overflow;
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 *f = *f; // { dg-warning "assigned to itself" }
kono
parents:
diff changeset
41 bar1->b_ = bar1->b_; // { dg-warning "assigned to itself" }
kono
parents:
diff changeset
42 bar2.c_ = bar2.c_; // { dg-warning "assigned to itself" }
kono
parents:
diff changeset
43 local_foo = local_foo; // { dg-bogus "assigned to itself" }
kono
parents:
diff changeset
44 foo = foo; // { dg-bogus "assigned to itself" }
kono
parents:
diff changeset
45 foo.setA(5);
kono
parents:
diff changeset
46 bar_array[3].c_ = bar_array[3].c_; // { dg-warning "assigned to itself" }
kono
parents:
diff changeset
47 bar_array[x+g].b_ = bar_array[x+g].b_; // { dg-warning "self-assignment detected" "" { xfail *-*-* } }
kono
parents:
diff changeset
48 y = x;
kono
parents:
diff changeset
49 x = y;
kono
parents:
diff changeset
50 }