[Bug testsuite/37561] [4.4 Regression] Revision 140405 caused g++.old-deja/g++.mike/warn1.C
hjl dot tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Sep 17 16:12:00 GMT 2008
------- 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
[hjl@gnu-6 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;
}
[hjl@gnu-6 tmp]$ gcc -Wall x.cc -S -m64
x.cc: In function âÂÂint main()âÂÂ:
x.cc:9: error: lvalue required as increment operand
[hjl@gnu-6 tmp]$ gcc -Wall x.cc -S -m32
x.cc: In function âÂÂint main()âÂÂ:
x.cc:9: error: lvalue required as increment operand
[hjl@gnu-6 tmp]$
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37561
More information about the Gcc-bugs
mailing list