This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug testsuite/37561] [4.4 Regression] Revision 140405 caused g++.old-deja/g++.mike/warn1.C



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]