diff options
Diffstat (limited to 'lib/CodeGen/StackProtector.cpp')
-rw-r--r-- | lib/CodeGen/StackProtector.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/CodeGen/StackProtector.cpp b/lib/CodeGen/StackProtector.cpp index accfe7b..45f97ac 100644 --- a/lib/CodeGen/StackProtector.cpp +++ b/lib/CodeGen/StackProtector.cpp @@ -33,6 +33,7 @@ #include "llvm/IR/Intrinsics.h" #include "llvm/IR/Module.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Target/TargetSubtargetInfo.h" #include <cstdlib> using namespace llvm; @@ -85,7 +86,7 @@ bool StackProtector::runOnFunction(Function &Fn) { DominatorTreeWrapperPass *DTWP = getAnalysisIfAvailable<DominatorTreeWrapperPass>(); DT = DTWP ? &DTWP->getDomTree() : nullptr; - TLI = TM->getTargetLowering(); + TLI = TM->getSubtargetImpl()->getTargetLowering(); Attribute Attr = Fn.getAttributes().getAttribute( AttributeSet::FunctionIndex, "stack-protector-buffer-size"); @@ -168,7 +169,7 @@ bool StackProtector::HasAddressTaken(const Instruction *AI) { } else if (const PHINode *PN = dyn_cast<PHINode>(U)) { // Keep track of what PHI nodes we have already visited to ensure // they are only visited once. - if (VisitedPHIs.insert(PN)) + if (VisitedPHIs.insert(PN).second) if (HasAddressTaken(PN)) return true; } else if (const GetElementPtrInst *GEP = dyn_cast<GetElementPtrInst>(U)) { @@ -479,12 +480,12 @@ BasicBlock *StackProtector::CreateFailBB() { if (Trip.getOS() == llvm::Triple::OpenBSD) { Constant *StackChkFail = M->getOrInsertFunction( "__stack_smash_handler", Type::getVoidTy(Context), - Type::getInt8PtrTy(Context), NULL); + Type::getInt8PtrTy(Context), nullptr); B.CreateCall(StackChkFail, B.CreateGlobalStringPtr(F->getName(), "SSH")); } else { Constant *StackChkFail = M->getOrInsertFunction( - "__stack_chk_fail", Type::getVoidTy(Context), NULL); + "__stack_chk_fail", Type::getVoidTy(Context), nullptr); B.CreateCall(StackChkFail); } B.CreateUnreachable(); |