/* PR c/101702 - ICE on invalid function redeclaration { dg-do compile } { dg-options "-Wall" } */ typedef __INTPTR_TYPE__ intptr_t; #define copysign(x, y) __builtin_copysign (x, y) void f0 (double[!copysign (~2, 3)]); void f1 (double[!copysign (~2, 3)]); void f1 (double[1]); // { dg-warning "-Warray-parameter" } void f2 (int[(int)+1.0]); void f2 (int[(int)+1.1]); /* Also verify that equivalent expressions don't needlessly cause false positives or negatives. */ struct S { int a[1]; }; extern struct S *sp; void f3 (int[(intptr_t)((char*)sp->a - (char*)sp)]); void f3 (int[(intptr_t)((char*)&sp->a[0] - (char*)sp)]); void f3 (int[(intptr_t)((char*)&sp->a[1] - (char*)sp)]); // { dg-warning "-Warray-parameter" }