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. llvm-svn: 206459
This commit is contained in:
parent
ae8e0d8da9
commit
cd1fc4bc1b
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue