[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