Inliner::OptimizationRemark: Fix crash in clang/test/Frontend/optimization-remark.c on some hosts, including --vg.

DebugLoc in Callsite would not live after Inliner. It should be copied before Inliner.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206459 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
NAKAMURA Takumi
2014-04-17 12:22:14 +00:00
parent 83ae2f7c65
commit 207be301e3
2 changed files with 6 additions and 2 deletions

View File

@@ -518,6 +518,9 @@ bool Inliner::runOnSCC(CallGraphSCC &SCC) {
if (!shouldInline(CS))
continue;
// Get DebugLoc to report. CS will be invalid after Inliner.
DebugLoc DLoc = CS.getInstruction()->getDebugLoc();
// Attempt to inline the function.
if (!InlineCallIfPossible(CS, InlineInfo, InlinedArrayAllocas,
InlineHistoryID, InsertLifetime, DL))
@@ -526,7 +529,7 @@ bool Inliner::runOnSCC(CallGraphSCC &SCC) {
// Report the inline decision.
Caller->getContext().emitOptimizationRemark(
DEBUG_TYPE, *Caller, CS.getInstruction()->getDebugLoc(),
DEBUG_TYPE, *Caller, DLoc,
Twine(Callee->getName() + " inlined into " + Caller->getName()));
// If inlining this function gave us any new call sites, throw them