[LLVMbugs] [Bug 11382] New: Pointer comparison failure with opt -O2

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Nov 15 07:51:12 PST 2011


http://llvm.org/bugs/show_bug.cgi?id=11382

             Bug #: 11382
           Summary: Pointer comparison failure with opt -O2
           Product: new-bugs
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: babslachem at gmail.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Created attachment 7613
  --> http://llvm.org/bugs/attachment.cgi?id=7613
C file to reproduce problem

Here is a simple C example:

#include <stdio.h>

static int rslts[31] ;

int main(int argc, char *argv[]) 
{ 
    char *pp = "abcdef", *qq = pp + 5;

    if (qq < pp - 1)     rslts[8] = 4;
    printf ("result[8] = %d\n", rslts[8]) ;
    return 0 ;
}

When compiled using clang at -O0 or -O2 we got different results.
It seems that at -O2 LLVM opt assumes that pointer comparison is always true
and thus result printed output is:

result[8]=4 

Where as at -O0 printed output is:

result[8]=0

Correct behavior is at -O0. looking at LLVM assembly generated at -O0 on which
we invoke 'opt -O2' we clearly see that final LLVM is not correct.

I used LLVM 2.9, trunk and 3.0rc3 and they all exhibits same behavior.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list