summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/IR/DiagnosticInfo.h3
-rw-r--r--lib/Transforms/IPO/Inliner.cpp5
2 files changed, 6 insertions, 2 deletions
diff --git a/include/llvm/IR/DiagnosticInfo.h b/include/llvm/IR/DiagnosticInfo.h
index e082035795..604de1fed9 100644
--- a/include/llvm/IR/DiagnosticInfo.h
+++ b/include/llvm/IR/DiagnosticInfo.h
@@ -17,6 +17,7 @@
#include "llvm-c/Core.h"
#include "llvm/ADT/ArrayRef.h"
+#include "llvm/IR/DebugLoc.h"
#include "llvm/Support/Casting.h"
namespace llvm {
@@ -289,7 +290,7 @@ private:
const Function &Fn;
/// Debug location where this diagnostic is triggered.
- const DebugLoc &DLoc;
+ DebugLoc DLoc;
/// Message to report.
const Twine &Msg;
diff --git a/lib/Transforms/IPO/Inliner.cpp b/lib/Transforms/IPO/Inliner.cpp
index 17be3b2b44..6d3ceef86c 100644
--- a/lib/Transforms/IPO/Inliner.cpp
+++ b/lib/Transforms/IPO/Inliner.cpp
@@ -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