[Bug c/13522] New: Erroneous handling of negated negative integer literals

sven at clio dot in-berlin dot de gcc-bugzilla@gcc.gnu.org
Tue Dec 30 16:50:00 GMT 2003


The following code 
 
const unsigned i1 = - (-2147483648); 
const unsigned i2 = - (- 2147483648); 
 
compiles erroneous on a Debian gnu-linux-i386 (GCC versions 2.95.4 and 3.3.2). 
The compiler gives the warning that the values are unsigned only (which they 
are, they are definitively positive). When You look at the produced assembler 
code: 
 
        .file   "bug.c" 
.globl i1 
        .section        .rodata 
        .align 4 
        .type   i1, @object 
        .size   i1, 4 
i1: 
        .long   -2147483648 
.globl i2 
        .align 4 
        .type   i2, @object 
        .size   i2, 4 
i2: 
        .long   -2147483648 
        .section        .note.GNU-stack,"",@progbits 
        .ident  "GCC: (GNU) 3.3.2 (Debian)" 
 
You will note, that one of the minus signes simply vanished without effect. 
 
Best Regards 
Sven

-- 
           Summary: Erroneous handling of negated negative integer literals
           Product: gcc
           Version: 3.3.3
            Status: UNCONFIRMED
          Severity: critical
          Priority: P2
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: sven at clio dot in-berlin dot de
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13522



More information about the Gcc-bugs mailing list