// PR c++/98126 // { dg-do compile } // { dg-options "-Wsequence-point" } // Make sure we don't hang when verify_tree processes a large expression. struct T { bool operator==(const T &ot) const; }; #define CMP(M, N, L) t[100 * M + 10 * N + L] == ot.t[100 * M + 10 * N + L] && #define CMP1(M, N) \ CMP(M, N, 0) \ CMP(M, N, 1) \ CMP(M, N, 2) \ CMP(M, N, 3) \ CMP(M, N, 4) \ CMP(M, N, 5) \ CMP(M, N, 6) \ CMP(M, N, 7) \ CMP(M, N, 8) \ CMP(M, N, 9) #define CMP2(M) \ CMP1(M, 0) \ CMP1(M, 1) \ CMP1(M, 2) \ CMP1(M, 3) \ CMP1(M, 4) \ CMP1(M, 5) \ CMP1(M, 6) \ CMP1(M, 7) \ CMP1(M, 8) \ CMP1(M, 9) #define GENERATE_CMPS \ CMP2(0) \ CMP2(1) \ CMP2(2) \ CMP2(3) \ CMP2(4) \ CMP2(5) \ CMP2(6) \ CMP2(7) \ CMP2(8) \ CMP2(9) struct C { bool operator==(const C &ot) const { return GENERATE_CMPS true; } T t[999]; };