[safestack] Requires a valid TargetMachine to be passed to the SafeStack pass.
Patch by Michael LeMay Differential revision: http://reviews.llvm.org/D24896 llvm-svn: 283248
This commit is contained in:
@@ -358,9 +358,8 @@ bool SafeStack::IsSafeStackAlloca(const Value *AllocaPtr, uint64_t AllocaSize) {
|
||||
|
||||
Value *SafeStack::getOrCreateUnsafeStackPtr(IRBuilder<> &IRB, Function &F) {
|
||||
// Check if there is a target-specific location for the unsafe stack pointer.
|
||||
if (TL)
|
||||
if (Value *V = TL->getSafeStackPointerLocation(IRB))
|
||||
return V;
|
||||
if (Value *V = TL->getSafeStackPointerLocation(IRB))
|
||||
return V;
|
||||
|
||||
// Otherwise, assume the target links with compiler-rt, which provides a
|
||||
// thread-local variable with a magic name.
|
||||
@@ -393,9 +392,7 @@ Value *SafeStack::getOrCreateUnsafeStackPtr(IRBuilder<> &IRB, Function &F) {
|
||||
}
|
||||
|
||||
Value *SafeStack::getStackGuard(IRBuilder<> &IRB, Function &F) {
|
||||
Value *StackGuardVar = nullptr;
|
||||
if (TL)
|
||||
StackGuardVar = TL->getIRStackGuard(IRB);
|
||||
Value *StackGuardVar = TL->getIRStackGuard(IRB);
|
||||
if (!StackGuardVar)
|
||||
StackGuardVar =
|
||||
F.getParent()->getOrInsertGlobal("__stack_chk_guard", StackPtrTy);
|
||||
@@ -752,7 +749,9 @@ bool SafeStack::runOnFunction(Function &F) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TL = TM ? TM->getSubtargetImpl(F)->getTargetLowering() : nullptr;
|
||||
if (!TM)
|
||||
report_fatal_error("Target machine is required");
|
||||
TL = TM->getSubtargetImpl(F)->getTargetLowering();
|
||||
SE = &getAnalysis<ScalarEvolutionWrapperPass>().getSE();
|
||||
|
||||
++NumFunctions;
|
||||
|
||||
Reference in New Issue
Block a user