llvm-6502/lib/IR
Hal Finkel 7c11695a23 Make Value::isDereferenceablePointer handle offsets to pointer types with dereferenceable attributes
When we have a parameter (or call site return) with a dereferenceable
attribute, it can specify the size of an array pointed to by that parameter. If
we have a value for which we can accumulate a constant offset to such a
parameter, then we can use that offset in a direct comparison with the size
specified by the dereferenceable attribute.

This enables us to handle cases like this:

  int foo(int a[static 3]) {
    return a[2]; /* this is always dereferenceable */
  }

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213447 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-19 03:25:16 +00:00
..
AsmWriter.cpp IR: Aliases don't belong to an explicit comdat 2014-07-10 16:26:10 +00:00
AsmWriter.h IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
AttributeImpl.h Add a dereferenceable attribute 2014-07-18 15:51:28 +00:00
Attributes.cpp Add a dereferenceable attribute 2014-07-18 15:51:28 +00:00
AutoUpgrade.cpp Rename loop unrolling and loop vectorizer metadata to have a common prefix. 2014-06-25 15:41:00 +00:00
BasicBlock.cpp
CMakeLists.txt IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
Comdat.cpp IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
ConstantFold.cpp IR: Fold away compares between GV GEPs and GVs 2014-07-04 22:05:26 +00:00
ConstantFold.h
ConstantRange.cpp
Constants.cpp InstCombine: Don't turn -(x/INT_MIN) -> x/INT_MIN 2014-07-02 06:07:09 +00:00
ConstantsContext.h
Core.cpp Update the MemoryBuffer API to use ErrorOr. 2014-07-06 17:43:13 +00:00
DataLayout.cpp Revert "Introduce a string_ostream string builder facilty" 2014-06-26 22:52:05 +00:00
DebugInfo.cpp Revert "Reapply "DebugInfo: Ensure that all debug location scope chains from instructions within a function, lead to the function itself."""" 2014-07-18 23:57:20 +00:00
DebugLoc.cpp
DiagnosticInfo.cpp Rename DiagnosticInfoOptimizationWarning to DiagnosticInfoOptimizationFailure 2014-07-18 19:36:04 +00:00
DiagnosticPrinter.cpp
DIBuilder.cpp Debug info: split out complex DIVariable address expressions into a 2014-06-30 17:17:35 +00:00
Dominators.cpp
Function.cpp Add a dereferenceable attribute 2014-07-18 15:51:28 +00:00
GCOV.cpp Update the MemoryBuffer API to use ErrorOr. 2014-07-06 17:43:13 +00:00
Globals.cpp IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
GVMaterializer.cpp
InlineAsm.cpp
Instruction.cpp IR: add "cmpxchg weak" variant to support permitted failure. 2014-06-13 14:24:07 +00:00
Instructions.cpp Add CreatePointerBitCastOrAddrSpaceCast to IRBuilder and co. 2014-07-14 17:24:35 +00:00
IntrinsicInst.cpp
IRBuilder.cpp
IRPrintingPasses.cpp
LeakDetector.cpp
LeaksContext.h
LegacyPassManager.cpp
LLVMBuild.txt
LLVMContext.cpp Revert "Introduce a string_ostream string builder facilty" 2014-06-26 22:52:05 +00:00
LLVMContextImpl.cpp
LLVMContextImpl.h
Makefile
Mangler.cpp
MDBuilder.cpp
Metadata.cpp The count() function for STL datatypes returns unsigned, even where it's 2014-06-20 10:26:56 +00:00
Module.cpp IR: cleanup Module::dropReferences 2014-07-03 16:12:55 +00:00
module.modulemap
Pass.cpp
PassManager.cpp Remove unnecessary/redundant std::move 2014-07-16 17:09:21 +00:00
PassRegistry.cpp
SymbolTableListTraitsImpl.h
Type.cpp
TypeFinder.cpp
Use.cpp
User.cpp
Value.cpp Make Value::isDereferenceablePointer handle offsets to pointer types with dereferenceable attributes 2014-07-19 03:25:16 +00:00
ValueSymbolTable.cpp
ValueTypes.cpp
Verifier.cpp Document the maximum LLVM IR alignment, which is 1 << 29 or 0.5 GiB 2014-07-15 01:16:09 +00:00