llvm-project/llvm/lib/IR
Anna Thomas 7df1a92543 [SafepointIRVerifier] Allow deriving pointers from unrelocated base
Summary:
This patch allows to use derived pointers (GEPs/bitcasts) of unrelocated
base pointers. We care only about the uses of these derived pointers.

It is acheived by two changes:
1. When we have enough information to say if the pointer is unrelocated at some
point or not, we walk all BBs to remove from their Contributions all valid defs
of unrelocated pointers (GEP with unrelocated base or bitcast of unrelocated
pointer).
2. When it comes to verification we just ignore instructions that were removed
at stage 1.

Patch by Daniil Suchkov!

Reviewers: anna, reames, apilipenko, mkazantsev

Reviewed By: anna, mkazantsev

Subscribers: llvm-commits

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

llvm-svn: 319838
2017-12-05 21:39:37 +00:00
..
AsmWriter.cpp [IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag 2017-11-06 16:27:15 +00:00
AttributeImpl.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-06-19 22:05:08 +00:00
Attributes.cpp Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
AttributesCompatFunc.td
AutoUpgrade.cpp [x86][AVX512] Lowering kunpack intrinsics to LLVM IR 2017-12-05 15:42:56 +00:00
BasicBlock.cpp Irreducible loop metadata for more accurate block frequency under PGO. 2017-11-02 22:26:51 +00:00
CMakeLists.txt GCOV: Move GCOV from IR & Support into ProfileData to fix layering 2017-11-03 20:57:10 +00:00
Comdat.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ConstantFold.cpp [ConstantFold] Support vector index when factoring out GEP index into preceding dimensions 2017-12-04 19:56:33 +00:00
ConstantFold.h IR: Introduce inrange attribute on getelementptr indices. 2016-11-10 22:34:55 +00:00
ConstantRange.cpp [ConstantRange] Support subtraction in makeGuaranteedNoWrapRegion. 2017-12-05 18:14:23 +00:00
Constants.cpp [IR] Implement Constant::isNegativeZeroValue/isZeroValue/isAllOnesValue/isOneValue/isMinSignedValue for ConstantDataVector without going through getElementAsConstant 2017-07-15 22:06:19 +00:00
ConstantsContext.h [IR] Stop deleting other signatures of User::operator new when we override one signature in a class derived from User 2017-06-12 23:25:15 +00:00
Core.cpp [LLVM-C] Publicly expose getters of MetadataType, TokenType 2017-10-27 11:51:40 +00:00
DIBuilder.cpp Mark all library options as hidden. 2017-12-01 00:53:10 +00:00
DataLayout.cpp Support, IR, ADT: Check nullptr after allocation with malloc/realloc or calloc 2017-07-20 01:30:39 +00:00
DebugInfo.cpp [DebugInfo] Unify logic to merge DILocations. NFC. 2017-11-06 23:15:21 +00:00
DebugInfoMetadata.cpp Move getVariableSize from Verifier.cpp into DIVariable::getSize() (NFC) 2017-11-28 00:57:51 +00:00
DebugLoc.cpp Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
DiagnosticHandler.cpp Allow ORE.emit to take a closure to delay building the remark object 2017-09-19 23:00:55 +00:00
DiagnosticInfo.cpp [OptRemark] Move YAML writing to IR 2017-10-04 15:18:11 +00:00
DiagnosticPrinter.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
Dominators.cpp Mark all library options as hidden. 2017-12-01 00:53:10 +00:00
Function.cpp [TableGen] Allow intrinsics to have up to 8 return values. 2017-10-12 17:40:00 +00:00
GVMaterializer.cpp
Globals.cpp Represent runtime preemption in the IR. 2017-10-26 15:00:26 +00:00
IRBuilder.cpp Expand IRBuilder interface for atomic memcpy to require pointer alignments. (NFC) 2017-11-10 19:38:12 +00:00
IRPrintingPasses.cpp [IR] Avoid dangling else warning. NFC. 2017-12-01 18:39:58 +00:00
InlineAsm.cpp [inlineasm] Fix crash when number of matched input constraint operands overflows signed char 2017-10-25 12:51:32 +00:00
Instruction.cpp [llvm] Remove redundant return [NFC] 2017-11-12 03:47:50 +00:00
Instructions.cpp Fix invalid ptrtoint in InstCombine 2017-10-22 20:28:17 +00:00
IntrinsicInst.cpp Add ‘llvm.experimental.constrained.fma‘ Intrinsic. 2017-08-24 04:18:24 +00:00
LLVMBuild.txt Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
LLVMContext.cpp Irreducible loop metadata for more accurate block frequency under PGO. 2017-11-02 22:26:51 +00:00
LLVMContextImpl.cpp This patch fixes https://bugs.llvm.org/show_bug.cgi?id=32352 2017-09-15 20:10:09 +00:00
LLVMContextImpl.h This patch fixes https://bugs.llvm.org/show_bug.cgi?id=32352 2017-09-15 20:10:09 +00:00
LegacyPassManager.cpp IR printing improvement for function passes - introducing -print-module-scope 2017-12-01 17:42:46 +00:00
MDBuilder.cpp Irreducible loop metadata for more accurate block frequency under PGO. 2017-11-02 22:26:51 +00:00
Mangler.cpp Move llvm::emitLinkerFlagsForGlobalCOFF() to Mangler. 2017-03-31 04:46:50 +00:00
Metadata.cpp Move the stripping of invalid debug info from the Verifier to AutoUpgrade. 2017-10-02 18:31:29 +00:00
MetadataImpl.h
Module.cpp Normalize constructor call syntax, NFCI. 2017-07-18 08:36:22 +00:00
ModuleSummaryIndex.cpp [cfi] CFI-ICall for ThinLTO. 2017-06-16 00:18:29 +00:00
Operator.cpp [IR] Remove some unneeded includes from Operator.h and fix cpp files that were transitively depending on it. NFC 2017-03-20 05:08:41 +00:00
OptBisect.cpp [IR] Missing changes for r312289 (NFC). 2017-08-31 22:06:09 +00:00
Pass.cpp Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
PassManager.cpp [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
PassRegistry.cpp [Pass] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-09-06 23:05:38 +00:00
ProfileSummary.cpp
SafepointIRVerifier.cpp [SafepointIRVerifier] Allow deriving pointers from unrelocated base 2017-12-05 21:39:37 +00:00
Statepoint.cpp [Statepoint] Add helper functions for GCRelocate and GCResult 2017-06-20 20:54:57 +00:00
SymbolTableListTraitsImpl.h ADT: Remove external uses of ilist_iterator, NFC 2016-09-03 01:22:56 +00:00
Type.cpp [IR] Add Type::isIntOrIntVectorTy(unsigned) similar to the existing isIntegerTy(unsigned), but also works for vectors. 2017-07-09 07:04:03 +00:00
TypeFinder.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
Use.cpp
User.cpp [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Value.cpp Current implementation of Value::replaceUsesExceptBlockAddr() uses UseList 2017-11-17 00:30:24 +00:00
ValueSymbolTable.cpp [NVPTX] Assign valid global names 2017-12-04 14:19:33 +00:00
ValueTypes.cpp [MVT] add v1i1 MVT 2017-05-18 11:29:41 +00:00
Verifier.cpp Move getVariableSize from Verifier.cpp into DIVariable::getSize() (NFC) 2017-11-28 00:57:51 +00:00