[safestack] Reapply r283248 after moving X86-targeted SafeStack tests into

the X86 subdirectory. Original commit message:

Requires a valid TargetMachine to be passed to the SafeStack pass.

Patch by Michael LeMay

Differential revision: http://reviews.llvm.org/D24896


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284161 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David L Kreitzer 2016-10-13 20:57:51 +00:00
parent fcfb682297
commit 120f92e074

View File

@ -357,9 +357,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.
@ -392,9 +391,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);
@ -751,7 +748,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;