llvm-project/llvm/lib/Transforms/Utils
Adrian Prantl c10d0e5ccd Make it illegal for two Functions to point to the same DISubprogram
As recently discussed on llvm-dev [1], this patch makes it illegal for
two Functions to point to the same DISubprogram and updates
FunctionCloner to also clone the debug info of a function to conform
to the new requirement. To simplify the implementation it also factors
out the creation of inlineAt locations from the Inliner into a
general-purpose utility in DILocation.

[1] http://lists.llvm.org/pipermail/llvm-dev/2017-May/112661.html
<rdar://problem/31926379>

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

This reapplies r302469 with a fix for a bot failure (reparentDebugInfo
now checks for the case the orig and new function are identical).

llvm-svn: 302576
2017-05-09 19:47:37 +00:00
..
ASanStackFrameLayout.cpp [asan] Replace std::to_string with llvm::to_string 2016-10-19 00:16:56 +00:00
AddDiscriminators.cpp [AddDiscriminators] Assign discriminators to MemIntrinsic calls. 2017-04-11 19:07:30 +00:00
BasicBlockUtils.cpp Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
BreakCriticalEdges.cpp [PM] Port BreakCriticalEdges to the new PM. 2016-07-22 18:04:25 +00:00
BuildLibCalls.cpp TargetLibraryInfo: Introduce wcslen 2017-05-05 20:25:50 +00:00
BypassSlowDivision.cpp [ValueTracking] Introduce a KnownBits struct to wrap the two APInts for computeKnownBits 2017-04-26 16:39:58 +00:00
CMakeLists.txt MemorySSA: Move to Analysis, from Transforms/Utils. It's used as 2017-04-11 20:06:36 +00:00
CloneFunction.cpp Make it illegal for two Functions to point to the same DISubprogram 2017-05-09 19:47:37 +00:00
CloneModule.cpp Cloning: Copy comdats when cloning globals. 2017-01-18 20:02:31 +00:00
CmpInstAnalysis.cpp [APInt] Rename getSignBit to getSignMask 2017-04-20 16:56:25 +00:00
CodeExtractor.cpp [CodeExtractor]: Fixup use refs of the old phi. 2017-04-25 04:51:19 +00:00
CtorUtils.cpp [CtorUtils] Modernize. No functional changes intended. 2016-10-22 01:21:24 +00:00
DemoteRegToStack.cpp Allow DataLayout to specify addrspace for allocas. 2017-04-10 22:27:50 +00:00
EscapeEnumerator.cpp Suppress all uses of LLVM_END_WITH_NULL. NFC. 2017-05-09 19:31:13 +00:00
Evaluator.cpp [IR] Redesign the case iterator in SwitchInst to actually be an iterator 2017-04-12 07:27:28 +00:00
FlattenCFG.cpp [FlattenCFG] Simplify + remove unused variable. NFCI. 2016-08-05 20:53:35 +00:00
FunctionComparator.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
FunctionImportUtils.cpp FunctionImport: Use IRMover directly. 2017-02-03 16:56:27 +00:00
GlobalStatus.cpp [Transforms/Utils] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-14 00:32:38 +00:00
ImportedFunctionsInliningStatistics.cpp [ThinLTO] Correct counting of functions in inliner stats 2017-03-24 17:59:06 +00:00
InlineFunction.cpp Make it illegal for two Functions to point to the same DISubprogram 2017-05-09 19:47:37 +00:00
InstructionNamer.cpp [InstNamer] Use range-for 2017-05-08 23:18:43 +00:00
IntegerDivision.cpp
LCSSA.cpp [LCSSA] Don't insert tokens into the worklist at all. 2017-04-17 14:32:05 +00:00
LLVMBuild.txt
LibCallsShrinkWrap.cpp [LibCallsShrinkWrap] Remove an unnecessary class member variable. 2017-04-26 21:28:40 +00:00
Local.cpp NFC: refactor replaceDominatedUsesWith 2017-05-09 19:39:44 +00:00
LoopSimplify.cpp Kill off the old SimplifyInstruction API by converting remaining users. 2017-04-28 19:55:38 +00:00
LoopUnroll.cpp Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
LoopUnrollPeel.cpp [LoopPeeling] Get rid of Phis that become invariant after N steps 2017-04-17 09:52:02 +00:00
LoopUnrollRuntime.cpp Avoid warning of unused variable in release builds. NFC 2017-05-03 19:25:04 +00:00
LoopUtils.cpp Introduce experimental generic intrinsics for horizontal vector reductions. 2017-05-09 10:43:25 +00:00
LoopVersioning.cpp [LoopVersioning] Require loop-simplify form for loop versioning. 2016-12-19 17:13:37 +00:00
LowerInvoke.cpp [PM] Port LowerInvoke to the new pass manager 2016-08-12 17:28:27 +00:00
LowerMemIntrinsics.cpp NVPTX: Extract mem intrinsic expansions into utilities 2017-02-08 17:49:52 +00:00
LowerSwitch.cpp LowerSwitch: Fix producing invalid IR on unreachable code 2017-04-21 23:54:12 +00:00
Mem2Reg.cpp [Mem2Reg] Remove AliasSetTracker updating logic from the pass. 2017-04-09 20:47:14 +00:00
MetaRenamer.cpp [MetaRenamer] Don't rename library functions. 2017-03-23 23:21:07 +00:00
ModuleUtils.cpp Suppress all uses of LLVM_END_WITH_NULL. NFC. 2017-05-09 19:31:13 +00:00
NameAnonGlobals.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
PredicateInfo.cpp Simplify the code and remove dead code 2017-04-11 08:21:27 +00:00
PromoteMemoryToRegister.cpp Kill off the old SimplifyInstruction API by converting remaining users. 2017-04-28 19:55:38 +00:00
SSAUpdater.cpp [Target, Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-18 00:57:48 +00:00
SanitizerStats.cpp
SimplifyCFG.cpp [ConstantRange][SimplifyCFG] Add a helper method to allow SimplifyCFG to determine if a ConstantRange has more than 8 elements without requiring an allocation if the ConstantRange is 64-bits wide. 2017-05-07 22:22:11 +00:00
SimplifyIndVar.cpp Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
SimplifyInstructions.cpp Kill off the old SimplifyInstruction API by converting remaining users. 2017-04-28 19:55:38 +00:00
SimplifyLibCalls.cpp Suppress all uses of LLVM_END_WITH_NULL. NFC. 2017-05-09 19:31:13 +00:00
SplitModule.cpp Move instances of std::function. 2016-06-12 16:13:55 +00:00
StripGCRelocates.cpp [StripGCRelocates] New pass to remove gc.relocates added by RS4GC 2016-10-21 18:43:16 +00:00
StripNonLineTableDebugInfo.cpp Add -strip-nonlinetable-debuginfo capability 2016-10-25 18:44:13 +00:00
SymbolRewriter.cpp [PM] Port SymbolRewriter to the new PM 2016-07-25 20:52:00 +00:00
UnifyFunctionExitNodes.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
Utils.cpp MemorySSA: Move to Analysis, from Transforms/Utils. It's used as 2017-04-11 20:06:36 +00:00
VNCoercion.cpp [GVN] Don't coerce non-integral pointers to integers or vice versa 2017-04-19 18:21:09 +00:00
ValueMapper.cpp Suppress all uses of LLVM_END_WITH_NULL. NFC. 2017-05-09 19:31:13 +00:00