1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 19:42:54 +02:00
llvm-mirror/lib/IR
Peter Collingbourne c382eafa00 IR: Consider two DISubprograms to be odr-equal if they have the same template parameters.
In ValueMapper we create new operands for MDNodes and
rely on MDNode::replaceWithUniqued to create a new MDNode
with the specified operands. However this doesn't always
actually happen correctly for DISubprograms because when we
uniquify the new node, we only odr-compare it with existing nodes
(MDNodeSubsetEqualImpl<DISubprogram>::isDeclarationOfODRMember). Although
the TemplateParameters field can refer to a distinct DICompileUnit via
DITemplateTypeParameter::type -> DICompositeType::scope -> DISubprogram::unit,
it is not currently included in the odr comparison. As a result, we can end
up getting our original DISubprogram back, which means we will have a cloned
module referring to the DICompileUnit in the original module, which causes
a verification error.

The fix I implemented was to consider TemplateParameters to be one of the
odr-equal properties. But I'm a little uncomfortable with this. In general it
seems unsound to rely on distinct MDNodes never being reachable from nodes
which we only check odr-equality of. My only long term suggestion would be
to separate odr-uniquing from full uniquing.

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

llvm-svn: 294240
2017-02-06 21:23:03 +00:00
..
AsmWriter.cpp Change debug-info-for-profiling from a TargetOption to a function attribute. 2017-02-01 22:45:09 +00:00
AttributeImpl.h [ADT, IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-07 22:06:02 +00:00
Attributes.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
AttributesCompatFunc.td
AttributeSetNode.h [ADT, IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-07 22:06:02 +00:00
AutoUpgrade.cpp [NVPTX] Auto-upgrade some NVPTX intrinsics to LLVM target-generic code. 2017-01-21 01:00:32 +00:00
BasicBlock.cpp [IR] Use const_cast to reuse the const version of two BasicBlock methods that are duplicated for both const and non-const. NFC 2017-01-22 06:53:04 +00:00
CMakeLists.txt [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
Comdat.cpp
ConstantFold.cpp Replace APFloatBase static fltSemantics data members with getter functions 2016-12-14 11:57:17 +00:00
ConstantFold.h IR: Introduce inrange attribute on getelementptr indices. 2016-11-10 22:34:55 +00:00
ConstantRange.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
Constants.cpp Replace APFloatBase static fltSemantics data members with getter functions 2016-12-14 11:57:17 +00:00
ConstantsContext.h [ADT, IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-07 22:06:02 +00:00
Core.cpp Include LLVMDumpValue in release builds. 2017-01-30 05:40:52 +00:00
DataLayout.cpp IR: Change the gep_type_iterator API to avoid always exposing the "current" type. 2016-12-02 02:24:42 +00:00
DebugInfo.cpp Change debug-info-for-profiling from a TargetOption to a function attribute. 2017-02-01 22:45:09 +00:00
DebugInfoMetadata.cpp Change debug-info-for-profiling from a TargetOption to a function attribute. 2017-02-01 22:45:09 +00:00
DebugLoc.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
DiagnosticInfo.cpp [LV] Also port failure remarks to new OptimizationRemarkEmitter API 2017-02-02 05:41:51 +00:00
DiagnosticPrinter.cpp
DIBuilder.cpp Change debug-info-for-profiling from a TargetOption to a function attribute. 2017-02-01 22:45:09 +00:00
Dominators.cpp Revert "Do not verify dominator tree if it has no roots" 2017-01-25 17:15:48 +00:00
Function.cpp Speed up Function::isIntrinsic() by adding a bit to GlobalValue. NFC 2016-12-28 22:59:45 +00:00
GCOV.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
Globals.cpp Move the section name from GlobalObject to the LLVMContext 2017-01-10 23:23:58 +00:00
GVMaterializer.cpp
InlineAsm.cpp Replace "fallthrough" comments with LLVM_FALLTHROUGH 2016-08-17 05:10:15 +00:00
Instruction.cpp fix documentation comments; NFC 2016-10-05 18:51:12 +00:00
Instructions.cpp fix comment formatting; NFC 2016-11-16 18:09:44 +00:00
IntrinsicInst.cpp Add intrinsics for constrained floating point operations 2017-01-26 23:27:59 +00:00
IRBuilder.cpp Add invariant start call creation in IRBuilder.NFC 2016-07-22 20:57:23 +00:00
IRPrintingPasses.cpp Consistently use ModuleAnalysisManager 2016-08-09 00:28:38 +00:00
LegacyPassManager.cpp Reverted: Track validity of pass results 2017-01-15 10:23:18 +00:00
LLVMBuild.txt
LLVMContext.cpp IR, X86: Understand !absolute_symbol metadata on global variables. 2016-12-08 19:01:00 +00:00
LLVMContextImpl.cpp Use unique_ptr in LLVMContextImpl's constant maps. 2016-10-10 16:26:13 +00:00
LLVMContextImpl.h IR: Consider two DISubprograms to be odr-equal if they have the same template parameters. 2017-02-06 21:23:03 +00:00
Mangler.cpp Remove the default constructor and count variable from the Mangler since 2016-09-29 02:03:50 +00:00
MDBuilder.cpp Use profile info to set function section prefix to group hot/cold functions. 2016-10-18 20:42:47 +00:00
Metadata.cpp [IR] Remove the DIExpression field from DIGlobalVariable. 2016-12-20 02:09:43 +00:00
MetadataImpl.h
Module.cpp Bitcode: Change the materializer interface to return llvm::Error. 2016-11-09 17:49:19 +00:00
ModuleSummaryIndex.cpp ThinLTO: handles modules with empty summaries 2016-10-08 04:44:18 +00:00
Operator.cpp IR: Change the gep_type_iterator API to avoid always exposing the "current" type. 2016-12-02 02:24:42 +00:00
OptBisect.cpp
Pass.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +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 Use the range variant of find instead of unpacking begin/end 2016-08-11 22:21:41 +00:00
ProfileSummary.cpp
Statepoint.cpp
SymbolTableListTraitsImpl.h ADT: Remove external uses of ilist_iterator, NFC 2016-09-03 01:22:56 +00:00
Type.cpp IR: Move NumElements field from {Array,Vector}Type to SequentialType. 2016-12-02 03:20:58 +00:00
TypeFinder.cpp Apply clang-tidy's modernize-loop-convert to most of lib/IR. 2016-06-26 14:10:56 +00:00
Use.cpp
User.cpp Retire llvm::alignOf in favor of C++11 alignof. 2016-10-20 15:02:18 +00:00
Value.cpp [IR] Don't call assertModuleIsMaterialized in release builds 2017-01-13 06:26:18 +00:00
ValueSymbolTable.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
ValueTypes.cpp getVectorElementType().getSizeInBits() -> getScalarSizeInBits() ; NFCI 2016-09-14 16:37:15 +00:00
Verifier.cpp Add intrinsics for constrained floating point operations 2017-01-26 23:27:59 +00:00