llvm-project/clang
Mikhail R. Gadelha bd1077e2bc [analyzer] Optimize constraint generation when the range is a concrete value
Summary:
If a constraint is something like:
```
$0 = [1,1]
```
it'll now be created as:
```
assert($0 == 1)
```
instead of:
```
assert($0 >= 1 && $0 <= 1)
```

In general, ~3% speedup when solving per query in my machine. Biggest improvement was when verifying sqlite3, total time went down from 3000s to 2200s.

I couldn't create a test for this as there is no way to dump the formula yet. D48221 adds a method to dump the formula but there is no way to do it from the command line.

Also, a test that prints the formula will most likely fail in the future, as different solvers print the formula in different formats.

Reviewers: NoQ, george.karpenkov, ddcc

Reviewed By: george.karpenkov

Subscribers: xazax.hun, szepet, a.sidorin

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

llvm-svn: 335116
2018-06-20 11:42:12 +00:00
..
INPUTS
bindings implementing Cursor.get_included_file in python bindings 2018-05-10 21:39:29 +00:00
cmake [CMake][Darwin] Match cxx-headers -> cxx_headers libcxx target rename. 2018-06-12 21:27:36 +00:00
docs [docs] -fsanitize=cfi only allowed with -fvisibility= 2018-06-15 23:11:18 +00:00
examples clang-interpreter: Add missing LLVM component Object 2018-06-03 08:12:15 +00:00
include [Sema] Allow creating types with multiple of the same addrspace. 2018-06-20 08:31:24 +00:00
lib [analyzer] Optimize constraint generation when the range is a concrete value 2018-06-20 11:42:12 +00:00
runtime [clang] Use add_llvm_install_targets 2017-11-30 22:35:02 +00:00
test [SPIR] Prevent SPIR targets from using half conversion intrinsics 2018-06-20 09:49:40 +00:00
tools Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
unittests [ASTMatchers] Add support for matching the type of a friend decl. 2018-06-18 09:23:08 +00:00
utils [AArch64] Corrected FP16 Intrinsic range checks in Clang + added Sema tests 2018-06-12 09:54:27 +00:00
www P0096R5, P0941R2: Update to match latest feature test macro specification. 2018-06-14 00:40:20 +00:00
.arcconfig
.clang-format
.clang-tidy Backport changes from llvm/.clang_tidy to clang/.clang_tidy configs 2018-03-20 14:39:12 +00:00
.gitignore
CMakeLists.txt [CMake] Allow specifying extra dependencies of bootstrap stage 2018-06-11 20:59:31 +00:00
CODE_OWNERS.TXT
INSTALL.txt
LICENSE.TXT Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
ModuleInfo.txt
NOTES.txt
README.txt

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source-level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:             http://clang.llvm.org/
Building and using Clang:         http://clang.llvm.org/get_started.html
Clang Static Analyzer:            http://clang-analyzer.llvm.org/
Information on the LLVM project:  http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.llvm.org/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/