mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-21 03:05:26 -04:00
[CodeGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313194 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
+37
-17
@@ -1,4 +1,4 @@
|
||||
//===-- SafeStack.cpp - Safe Stack Insertion ------------------------------===//
|
||||
//===- SafeStack.cpp - Safe Stack Insertion -------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
@@ -17,37 +17,56 @@
|
||||
|
||||
#include "SafeStackColoring.h"
|
||||
#include "SafeStackLayout.h"
|
||||
#include "llvm/ADT/APInt.h"
|
||||
#include "llvm/ADT/ArrayRef.h"
|
||||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/Statistic.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/Analysis/AssumptionCache.h"
|
||||
#include "llvm/Analysis/BranchProbabilityInfo.h"
|
||||
#include "llvm/Analysis/LoopInfo.h"
|
||||
#include "llvm/Analysis/ScalarEvolution.h"
|
||||
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
|
||||
#include "llvm/CodeGen/Passes.h"
|
||||
#include "llvm/Analysis/TargetLibraryInfo.h"
|
||||
#include "llvm/CodeGen/TargetPassConfig.h"
|
||||
#include "llvm/IR/Argument.h"
|
||||
#include "llvm/IR/Attributes.h"
|
||||
#include "llvm/IR/CallSite.h"
|
||||
#include "llvm/IR/ConstantRange.h"
|
||||
#include "llvm/IR/Constants.h"
|
||||
#include "llvm/IR/DIBuilder.h"
|
||||
#include "llvm/IR/DataLayout.h"
|
||||
#include "llvm/IR/DerivedTypes.h"
|
||||
#include "llvm/IR/Dominators.h"
|
||||
#include "llvm/IR/Function.h"
|
||||
#include "llvm/IR/IRBuilder.h"
|
||||
#include "llvm/IR/InstIterator.h"
|
||||
#include "llvm/IR/Instruction.h"
|
||||
#include "llvm/IR/Instructions.h"
|
||||
#include "llvm/IR/IntrinsicInst.h"
|
||||
#include "llvm/IR/Intrinsics.h"
|
||||
#include "llvm/IR/MDBuilder.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/IR/Type.h"
|
||||
#include "llvm/IR/Use.h"
|
||||
#include "llvm/IR/User.h"
|
||||
#include "llvm/IR/Value.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Casting.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/Format.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/MathExtras.h"
|
||||
#include "llvm/Support/raw_os_ostream.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Target/TargetLowering.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Target/TargetSubtargetInfo.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include "llvm/Transforms/Utils/Local.h"
|
||||
#include "llvm/Transforms/Utils/ModuleUtils.h"
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
using namespace llvm;
|
||||
using namespace llvm::safestack;
|
||||
@@ -255,16 +274,16 @@ bool SafeStack::IsSafeStackAlloca(const Value *AllocaPtr, uint64_t AllocaSize) {
|
||||
assert(V == UI.get());
|
||||
|
||||
switch (I->getOpcode()) {
|
||||
case Instruction::Load: {
|
||||
case Instruction::Load:
|
||||
if (!IsAccessSafe(UI, DL.getTypeStoreSize(I->getType()), AllocaPtr,
|
||||
AllocaSize))
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
case Instruction::VAArg:
|
||||
// "va-arg" from a pointer is safe.
|
||||
break;
|
||||
case Instruction::Store: {
|
||||
case Instruction::Store:
|
||||
if (V == I->getOperand(0)) {
|
||||
// Stored the pointer - conservatively assume it may be unsafe.
|
||||
DEBUG(dbgs() << "[SafeStack] Unsafe alloca: " << *AllocaPtr
|
||||
@@ -276,11 +295,10 @@ bool SafeStack::IsSafeStackAlloca(const Value *AllocaPtr, uint64_t AllocaSize) {
|
||||
AllocaPtr, AllocaSize))
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
case Instruction::Ret: {
|
||||
|
||||
case Instruction::Ret:
|
||||
// Information leak.
|
||||
return false;
|
||||
}
|
||||
|
||||
case Instruction::Call:
|
||||
case Instruction::Invoke: {
|
||||
@@ -372,7 +390,7 @@ void SafeStack::findInsts(Function &F,
|
||||
StackRestorePoints.push_back(LP);
|
||||
} else if (auto II = dyn_cast<IntrinsicInst>(&I)) {
|
||||
if (II->getIntrinsicID() == Intrinsic::gcroot)
|
||||
llvm::report_fatal_error(
|
||||
report_fatal_error(
|
||||
"gcroot intrinsic not compatible with safestack attribute");
|
||||
}
|
||||
}
|
||||
@@ -764,11 +782,12 @@ bool SafeStack::run() {
|
||||
}
|
||||
|
||||
class SafeStackLegacyPass : public FunctionPass {
|
||||
const TargetMachine *TM;
|
||||
const TargetMachine *TM = nullptr;
|
||||
|
||||
public:
|
||||
static char ID; // Pass identification, replacement for typeid..
|
||||
SafeStackLegacyPass() : FunctionPass(ID), TM(nullptr) {
|
||||
|
||||
SafeStackLegacyPass() : FunctionPass(ID) {
|
||||
initializeSafeStackLegacyPassPass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
@@ -817,9 +836,10 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
} // anonymous namespace
|
||||
} // end anonymous namespace
|
||||
|
||||
char SafeStackLegacyPass::ID = 0;
|
||||
|
||||
INITIALIZE_PASS_BEGIN(SafeStackLegacyPass, DEBUG_TYPE,
|
||||
"Safe Stack instrumentation pass", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetPassConfig)
|
||||
|
||||
Reference in New Issue
Block a user