LLVM backend for 6502
Go to file
Hal Finkel 3ef1aae2b5 Make use of @llvm.assume from LazyValueInfo
This change teaches LazyValueInfo to use the @llvm.assume intrinsic. Like with
the known-bits change (r217342), this requires feeding a "context" instruction
pointer through many functions. Aside from a little refactoring to reuse the
logic that turns predicates into constant ranges in LVI, the only new code is
that which can 'merge' the range from an assumption into that otherwise
computed. There is also a small addition to JumpThreading so that it can have
LVI use assumptions in the same block as the comparison feeding a conditional
branch.

With this patch, we can now simplify this as expected:
int foo(int a) {
  __builtin_assume(a > 5);
  if (a > 3) {
    bar();
    return 1;
  }
  return 0;
}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217345 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-07 20:29:59 +00:00
autoconf
bindings Reinstate "Nuke the old JIT." 2014-09-02 22:28:02 +00:00
cmake [CMake] Add -fno-sanitize=function to UBSan bootstrap 2014-09-05 01:17:30 +00:00
docs [docs] Document what "NFC" means in a commit message. 2014-09-06 00:19:16 +00:00
examples Fix configure and make build of llvm examples. 2014-09-03 13:12:16 +00:00
include Make use of @llvm.assume from LazyValueInfo 2014-09-07 20:29:59 +00:00
lib Make use of @llvm.assume from LazyValueInfo 2014-09-07 20:29:59 +00:00
projects
test Make use of @llvm.assume from LazyValueInfo 2014-09-07 20:29:59 +00:00
tools Adds the next bit of support for llvm-objdump’s -private-headers for executable Mach-O files. 2014-09-04 16:54:47 +00:00
unittests Try to unflake AllocatorTest.TestAlignmentPastSlab 2014-09-07 05:14:29 +00:00
utils [x86] Fix a pretty horrible bug and inconsistency in the x86 asm 2014-09-06 10:00:01 +00:00
.arcconfig
.clang-format
.gitignore
CMakeLists.txt Enabling LLVM & Clang to be cross-compiled using CMake from a single configuration command line 2014-09-03 23:21:18 +00:00
CODE_OWNERS.TXT
configure
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules Reinstate "Nuke the old JIT." 2014-09-02 22:28:02 +00:00
README.txt

Low Level Virtual Machine (LLVM)
================================

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

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.