[LLVMbugs] [Bug 7210] New: !!(intval==constant) generates assert in APInt assigment

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sun May 23 13:31:21 PDT 2010


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

           Summary: !!(intval==constant) generates assert in APInt
                    assigment
           Product: tools
           Version: trunk
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: normal
          Priority: P
         Component: analyze
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: paul at mediamolecule.com
                CC: llvmbugs at cs.uiuc.edu


I've just got clang's static analyzer up and running on our code base. One of
the problems I've come across that it chokes on asserts we have of the form
'ASSERT( x < 20 )'. After some digging, I have this minimal repro:

int f(int c)
{
        return !!(c==0);
}

Which causes clang --analyze to assert in APInt::operator==:

$ clang --analyze -v main.cpp
clang version 2.0 (trunk 104221)
Target: i386-pc-cygwin
Thread model: posix
 "/usr/local/bin/clang" -cc1 -triple i386-pc-cygwin -analyze -disable-free
-main-file-name main.cpp -analyzer-store=regi
on -analyzer-opt-analyze-nested-blocks -analyzer-check-dead-stores
-analyzer-check-objc-mem -analyzer-eagerly-assume -an
alyzer-check-objc-methodsigs -analyzer-check-objc-unused-ivars -analyzer-output
plist -w -mrelocation-model static -mdis
able-fp-elim -mconstructor-aliases -target-cpu pentium4 -v -resource-dir
/usr/local/lib/clang/2.0 -ferror-limit 19 -fmes
sage-length 120 -fexceptions -fgnu-runtime -fdiagnostics-show-option
-fcolor-diagnostics -o main.plist -x c++ main.cpp
clang -cc1 version 2.0 based upon llvm 2.8svn hosted on i386-pc-cygwin
#include "..." search starts here:
#include <...> search starts here:
 /cygdrive/c/dev/libcxx_svn/include
 /usr/local/lib/clang/2.0/include
 /usr/include
End of search list.
assertion "BitWidth == RHS.BitWidth && "Comparison requires equal bit widths""
failed: file "/cygdrive/c/dev/llvm_svn/in
clude/llvm/ADT/APInt.h", line 819, function: bool llvm::APInt::operator==(const
llvm::APInt&) const
Stack dump:
0.      Program arguments: /usr/local/bin/clang -cc1 -triple i386-pc-cygwin
-analyze -disable-free -main-file-name main.
cpp -analyzer-store=region -analyzer-opt-analyze-nested-blocks
-analyzer-check-dead-stores -analyzer-check-objc-mem -ana
lyzer-eagerly-assume -analyzer-check-objc-methodsigs
-analyzer-check-objc-unused-ivars -analyzer-output plist -w -mreloc
ation-model static -mdisable-fp-elim -mconstructor-aliases -target-cpu pentium4
-v -resource-dir /usr/local/lib/clang/2.
0 -ferror-limit 19 -fmessage-length 120 -fexceptions -fgnu-runtime
-fdiagnostics-show-option -fcolor-diagnostics -o main
.plist -x c++ main.cpp
1.      <eof> parser at end of file
2.      main.cpp:3:2: Error evaluating statement
3.      main.cpp:3:2: Error evaluating statement
4.      main.cpp:3:9: Error evaluating statement
5.      main.cpp:3:9: Error evaluating statement
clang: error: analyzer command failed due to signal 6 (use -v to see
invocation)


I'm compiling clang from source on cygwin/Windows 7, but I suspect this is
platform-independent. One thing I did notice was that compiling the same code
as main.c failed to generate an assert. 

Cheers,
Paul

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