------- 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