llvm-project/llvm/lib/IR
Vedant Kumar 8dfe819bcd [Verifier] Constrain where DILocations may be nested
Summary:
Constrain which metadata nodes are allowed to be, or contain,
DILocations. This ensures that logic for updating DILocations in a
Module is complete.

Currently, !llvm.loop metadata is the only odd duck which contains
nested DILocations. This has caused problems in the past: some passes
forgot to visit the nested locations, leading to subtly broken debug
info and late verification failures.

If there's a compelling reason for some future metadata to nest
DILocations, we'll need to introduce a generic API for updating the
locations attached to an Instruction before relaxing this check.

Reviewers: aprantl, dsanders

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D79245
2020-05-04 14:02:43 -07:00
..
AbstractCallSite.cpp Remove getNumUses() comparisons (NFC) 2020-05-02 11:05:19 +02:00
AsmWriter.cpp Fix Wparentheses gcc warning. NFC. 2020-04-28 13:59:14 +01:00
AttributeImpl.h [IR] AttributeList::getContext has a single user, remove it. 2020-05-01 14:18:29 +02:00
Attributes.cpp [IR] AttributeList::getContext has a single user, remove it. 2020-05-01 14:18:29 +02:00
AutoUpgrade.cpp Pass shufflevector indices as int instead of unsigned. 2020-04-15 15:52:49 +02:00
BasicBlock.cpp [CFG/BasicBlock] Rename succ_const to const_succ. [NFC] 2020-03-25 12:40:55 -07:00
CMakeLists.txt [NFC] Split Knowledge retention and place it more appropriatly 2020-04-02 15:01:41 +02:00
Comdat.cpp
ConstantFold.cpp [SVE] Remove calls to isScalable from IR 2020-04-23 11:51:22 -07:00
ConstantFold.h Remove "mask" operand from shufflevector. 2020-03-31 13:08:59 -07:00
ConstantRange.cpp [ConstantRange] Use APInt::or/APInt::and for single elements. 2020-04-01 09:50:24 +01:00
Constants.cpp [SVE] Remove calls to isScalable from IR 2020-04-23 11:51:22 -07:00
ConstantsContext.h [SVE] Remove calls to isScalable from IR 2020-04-23 11:51:22 -07:00
Core.cpp [IR] Replace all uses of CallBase::getCalledValue() with getCalledOperand(). 2020-04-27 22:17:03 -07:00
DIBuilder.cpp [DebugInfo] Change DIEnumerator payload type from int64_t to APInt 2020-04-18 12:49:31 -07:00
DataLayout.cpp [SVE] Add new VectorType subclasses 2020-04-22 08:59:01 -07:00
DebugInfo.cpp [DebugInfo] Update loop metadata in stripNonLineTableDebugInfo 2020-05-01 11:36:05 -07:00
DebugInfoMetadata.cpp [DebugInfo] Change DIEnumerator payload type from int64_t to APInt 2020-04-18 12:49:31 -07:00
DebugLoc.cpp
DiagnosticHandler.cpp
DiagnosticInfo.cpp [NFC] Remove trailing space 2020-02-18 10:49:13 +08:00
DiagnosticPrinter.cpp
Dominators.cpp Change callbr to only define its output SSA variable on the normal 2020-04-23 19:36:44 -04:00
FPEnv.cpp [FPEnv] Use single enum to represent rounding mode 2020-04-09 13:26:47 +07:00
Function.cpp [NFC] Rename *ByValOrInalloca* to *PassPointeeByValue* 2020-04-30 09:42:13 -07:00
GVMaterializer.cpp
Globals.cpp [Alignment][NFC] Remove deprecated functions introduced in 10.0.0 2020-04-06 12:07:18 +00:00
IRBuilder.cpp Clean up usages of asserting vector getters in Type 2020-04-10 14:18:47 -07:00
IRPrintingPasses.cpp [PassInstrumentation] Remove excess newline for the new pass manager 2019-11-28 17:20:17 -08:00
InlineAsm.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
Instruction.cpp Remove "mask" operand from shufflevector. 2020-03-31 13:08:59 -07:00
Instructions.cpp [SVE] Remove invalid usage of getNumElements in Instructions 2020-05-04 08:36:37 -07:00
IntrinsicInst.cpp [NFC] clang-format IntrinsicInst.h|cpp 2020-04-15 12:05:23 +02:00
LLVMBuild.txt [Remarks] Add string deduplication using a string table 2019-04-24 00:06:24 +00:00
LLVMContext.cpp Add IR constructs for preallocated (inalloca replacement) 2020-04-27 16:15:50 -07:00
LLVMContextImpl.cpp [IR] Make Attributes and AttributeLists trivially destructible and BumpPtrAllocate them 2020-05-01 14:12:17 +02:00
LLVMContextImpl.h LLVMContextImpl.h - remove defunct getOrAddScope* helpers declarations. NFC. 2020-04-24 13:27:59 +01:00
LLVMRemarkStreamer.cpp Avoid including FileSystem.h from MemoryBuffer.h 2020-02-29 12:30:23 -08:00
LegacyPassManager.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
MDBuilder.cpp [MDBuilder] Don't use stable sort for sorting integers. 2020-03-28 21:19:46 +01:00
Mangler.cpp [NFC] Rename *ByValOrInalloca* to *PassPointeeByValue* 2020-04-30 09:42:13 -07:00
Metadata.cpp [APFloat] Make use of new overloaded comparison operators. NFC. 2020-03-06 16:42:53 +00:00
MetadataImpl.h
Module.cpp RNG: Take pass name as argument instead of pass pointer. 2020-01-31 14:21:40 -05:00
ModuleSummaryIndex.cpp [ADT][NFC] SCCIterator: Change hasLoop() to hasCycle() 2020-03-01 19:17:21 +02:00
Operator.cpp [SVE] Remove calls to isScalable from IR 2020-04-23 11:51:22 -07:00
OptBisect.cpp Fix IR/Analysis layering issue with OptBisect 2019-02-28 04:00:55 +00:00
Pass.cpp [Pass] Ensure we don't include PassSupport.h or PassAnalysisSupport.h directly 2020-04-26 12:58:20 +01:00
PassInstrumentation.cpp
PassManager.cpp Add PassManagerImpl.h to hide implementation details 2020-02-03 11:15:55 -08:00
PassRegistry.cpp [Pass] Ensure we don't include PassSupport.h or PassAnalysisSupport.h directly 2020-04-26 12:58:20 +01:00
PassTimingInfo.cpp [TimePasses] Small fix in "-time-passes" flag that makes it more stable 2020-04-08 15:59:45 +00:00
ProfileSummary.cpp [ProfileSummary] Add partial profile annotation on IR. 2020-04-27 08:34:15 -07:00
SafepointIRVerifier.cpp [Support] Split MallocAllocator out of Allocator.h 2020-01-24 17:29:32 -08:00
Statepoint.cpp
SymbolTableListTraitsImpl.h [IR] Lazily number instructions for local dominance queries 2020-02-18 14:44:24 -08:00
Type.cpp [SVE] Do not store a bool for Scalable in VectorType 2020-04-24 10:36:26 -07:00
TypeFinder.cpp [NFC] Fixes -Wrange-loop-analysis warnings 2020-01-01 20:01:37 +01:00
Use.cpp [NFC] Remove waymarking because it improves performances 2020-04-17 11:27:10 +02:00
User.cpp [NFC] Remove waymarking because it improves performances 2020-04-17 11:27:10 +02:00
Value.cpp NFC: Clean up the implementation of StringPool a bit, and remove dependence on some "implicitly MallocAllocator" based methods on StringMapEntry. This allows reducing the #includes in StringMapEntry.h. 2020-04-12 16:37:17 -07:00
ValueSymbolTable.cpp NFC: Clean up the implementation of StringPool a bit, and remove dependence on some "implicitly MallocAllocator" based methods on StringMapEntry. This allows reducing the #includes in StringMapEntry.h. 2020-04-12 16:37:17 -07:00
Verifier.cpp [Verifier] Constrain where DILocations may be nested 2020-05-04 14:02:43 -07:00