On Wed, Jan 29, 2014 at 04:27:48PM +0100, Richard Biener wrote: > Actually best would be to avoid generating so many useless values > in the first place ... still, quadraticness is a complete no-go.
Filed as PR59992. Though, we have big issues in other parts of the compiler too, before managing to write the PR59992 testcase that seems to be expensive only in the remove_useless_value part, I've tried e.g. #define A(n) if (p[n]) { extern void foo##n (int, int, double); foo##n (p[n], 5, 8.0); } #define B(n) A(n##0) A(n##1) A(n##2) A(n##3) A(n##4) A(n##5) A(n##6) A(n##7) A(n##8) A(n##9) #define C(n) B(n##0) B(n##1) B(n##2) B(n##3) B(n##4) B(n##5) B(n##6) B(n##7) B(n##8) B(n##9) #define D(n) C(n##0) C(n##1) C(n##2) C(n##3) C(n##4) C(n##5) C(n##6) C(n##7) C(n##8) C(n##9) #define E(n) D(n##0) D(n##1) D(n##2) D(n##3) D(n##4) D(n##5) D(n##6) D(n##7) D(n##8) D(n##9) void foo (int *p) { E(1) E(2) } where there is a memory hog and compile time hog in ud_dce pass (-m32 -O2 -g). Jakub