| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-forwprop2" } */ |
| |
| class YY { public: |
| YY(const YY &v) { e[0] = v.e[0]; e[1] = v.e[1]; e[2] = v.e[2]; } |
| double &y() { return e[1]; } |
| double e[3]; }; |
| |
| class XX { public: |
| YY direction() const { return v; } |
| YY v; }; |
| |
| int foo(XX& r) { |
| if (r.direction().y() < 0.000001) return 0; |
| return 1; } |
| |
| /* { dg-final { scan-tree-dump-times "&this" 0 "forwprop2" } } */ |
| /* { dg-final { scan-tree-dump-times "&r" 0 "forwprop2" } } */ |
| /* { dg-final { cleanup-tree-dump "forwprop2" } } */ |
| |