------- Comment #2 from hjl dot tools at gmail dot com 2008-09-17 16:11 ------- (In reply to comment #1) > I tested with -m32 on powerpc64-linux, not with both -m32/-m64 which would > have > caught this; I'll test with both for related patches. > > The test previously used { dg-warning "" }, which matched any message from > that > line. The patch, in preparation to using new versions of dg-error and > dg-warning that actually check for "warning" and "error", changed that to { > dg-error "lvalue" }, which matches the error message for -m32 but not the > warning message for -m64. It's a bug in the compiler that the error isn't > reported for -m64, and the change to the test merely detected that. > > This should be a C++ bug, not a testsuite bug. >
I am not sure if it is a C++ bug. The differences between -m32 and -m64 are the sizes of __SIZE_TYPE__, int and pointer. Replace int with long gives me [EMAIL PROTECTED] tmp]$ cat x.cc typedef char * charptr; typedef __SIZE_TYPE__ size_t; char c[]={'A','B','C','D'}; long i=size_t(&c); long *pp=&i; void foo() { } int main() { charptr(*pp)++; // { dg-warning "" } return 0; } [EMAIL PROTECTED] tmp]$ gcc -Wall x.cc -S -m64 x.cc: In function âint main()â: x.cc:9: error: lvalue required as increment operand [EMAIL PROTECTED] tmp]$ gcc -Wall x.cc -S -m32 x.cc: In function âint main()â: x.cc:9: error: lvalue required as increment operand [EMAIL PROTECTED] tmp]$ -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37561