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

Reply via email to