Go to file
Mikhail R. Gadelha 53ac1a2ed4 [analyzer] Fix wrong comparison generation of the ranges generated by the refutation manager
The refutation manager is removing a true bug from the test in this patch.

The problem is that the following constraint:
```
(conj_$1{struct o *}) - (reg_$3<int * r>): [-9223372036854775808, 0]
```
is encoded as:
```
(and (bvuge (bvsub $1 $3) #x8000000000000000)
     (bvule (bvsub $1 $3) #x0000000000000000))
```
The issue is that unsigned comparisons (bvuge and bvule) are being generated instead of signed comparisons (bvsge and bvsle).

When generating the expressions:
```
(conj_$1{p *}) - (reg_$3<int * r>) >= -9223372036854775808
```
and
```
(conj_$1{p *}) - (reg_$3<int * r>) <= 0
```
both -9223372036854775808 and 0 are casted to pointer type and `LTy->isSignedIntegerOrEnumerationType()` in `Z3ConstraintManager::getZ3BinExpr` only checks if the type is signed, not if it's a pointer.

Reviewers: NoQ, george.karpenkov, ddcc

Subscribers: rnkovacs, NoQ, george.karpenkov, ddcc, xazax.hun, szepet, a.sidorin

Differential Revision: https://reviews.llvm.org/D48324

llvm-svn: 335926
2018-06-28 21:26:52 +00:00
clang [analyzer] Fix wrong comparison generation of the ranges generated by the refutation manager 2018-06-28 21:26:52 +00:00
clang-tools-extra [clangd] Use log10 instead of the natural logrithm for usage boost. 2018-06-28 16:51:12 +00:00
compiler-rt [UBsan] minimal unit tests removing OpenBSD spacial case 2018-06-28 21:10:52 +00:00
debuginfo-tests [debuginfo-tests] Always use the system python to invoke llgdb.py. 2018-06-10 19:38:26 +00:00
libclc atom: Use volatile pointers for cl_khr_{global,local}_int32_{base,extended}_atomics 2018-06-21 19:27:39 +00:00
libcxx Configure ELAST for MinGW 2018-06-28 20:16:45 +00:00
libcxxabi Support for multiarch runtimes layout 2018-06-28 03:11:52 +00:00
libunwind Support for multiarch runtimes layout 2018-06-28 03:11:52 +00:00
lld [WebAssembly] Fix --export of LTO symbols 2018-06-28 17:21:46 +00:00
lldb Add a way to load an image using a library name and list of paths. 2018-06-28 20:02:11 +00:00
llgo Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
llvm [InstCombine] adjust shuffle tests; NFC 2018-06-28 21:14:02 +00:00
openmp [OPENMP, NVPTX] Fixes for NVPTX RTL 2018-06-25 13:43:35 +00:00
parallel-libs Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
polly test: use regex matchers to make test-case robust against register renumberings 2018-06-28 07:11:48 +00:00
README.md

README.md

Low Level Virtual Machine (LLVM)

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.