Skip to content

Commit

Permalink
Rename LowerTypeTestsSummaryAction to PassSummaryAction. NFCI.
Browse files Browse the repository at this point in the history
I intend to use the same type with the same semantics in the WholeProgramDevirt
pass.

Differential Revision: https://reviews.llvm.org/D29746

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294629 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
pcc committed Feb 9, 2017
1 parent 5a764b0 commit 637c07c
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 29 deletions.
10 changes: 5 additions & 5 deletions include/llvm/Transforms/IPO.h
Original file line number Diff line number Diff line change
Expand Up @@ -215,19 +215,19 @@ ModulePass *createMetaRenamerPass();
/// manager.
ModulePass *createBarrierNoopPass();

/// What to do with the summary when running the LowerTypeTests pass.
enum class LowerTypeTestsSummaryAction {
/// What to do with the summary when running passes that operate on it.
enum class PassSummaryAction {
None, ///< Do nothing.
Import, ///< Import typeid resolutions from summary and globals.
Export, ///< Export typeid resolutions to summary and globals.
Import, ///< Import information from summary.
Export, ///< Export information to summary.
};

/// \brief This pass lowers type metadata and the llvm.type.test intrinsic to
/// bitsets.
/// \param Action What to do with the summary passed as Index.
/// \param Index The summary to use for importing or exporting, this can be null
/// when Action is None.
ModulePass *createLowerTypeTestsPass(LowerTypeTestsSummaryAction Action,
ModulePass *createLowerTypeTestsPass(PassSummaryAction Action,
ModuleSummaryIndex *Index);

/// \brief This pass export CFI checks for use by external modules.
Expand Down
4 changes: 2 additions & 2 deletions lib/Passes/PassBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -718,8 +718,8 @@ ModulePassManager PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
// CFI is disabled.
// Enable once we add support for the summary in the new PM.
#if 0
MPM.addPass(LowerTypeTestsPass(Summary ? LowerTypeTestsSummaryAction::Export :
LowerTypeTestsSummaryAction::None,
MPM.addPass(LowerTypeTestsPass(Summary ? PassSummaryAction::Export :
PassSummaryAction::None,
Summary));
#endif

Expand Down
33 changes: 16 additions & 17 deletions lib/Transforms/IPO/LowerTypeTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,6 @@
using namespace llvm;
using namespace lowertypetests;

using SummaryAction = LowerTypeTestsSummaryAction;

#define DEBUG_TYPE "lowertypetests"

STATISTIC(ByteArraySizeBits, "Byte array size in bits");
Expand All @@ -57,13 +55,13 @@ static cl::opt<bool> AvoidReuse(
cl::desc("Try to avoid reuse of byte array addresses using aliases"),
cl::Hidden, cl::init(true));

static cl::opt<SummaryAction> ClSummaryAction(
static cl::opt<PassSummaryAction> ClSummaryAction(
"lowertypetests-summary-action",
cl::desc("What to do with the summary when running this pass"),
cl::values(clEnumValN(SummaryAction::None, "none", "Do nothing"),
clEnumValN(SummaryAction::Import, "import",
cl::values(clEnumValN(PassSummaryAction::None, "none", "Do nothing"),
clEnumValN(PassSummaryAction::Import, "import",
"Import typeid resolutions from summary and globals"),
clEnumValN(SummaryAction::Export, "export",
clEnumValN(PassSummaryAction::Export, "export",
"Export typeid resolutions to summary and globals")),
cl::Hidden);

Expand Down Expand Up @@ -234,7 +232,7 @@ class GlobalTypeMember final : TrailingObjects<GlobalTypeMember, MDNode *> {
class LowerTypeTestsModule {
Module &M;

SummaryAction Action;
PassSummaryAction Action;
ModuleSummaryIndex *Summary;

bool LinkerSubsectionsViaSymbols;
Expand Down Expand Up @@ -334,7 +332,7 @@ class LowerTypeTestsModule {
void createJumpTable(Function *F, ArrayRef<GlobalTypeMember *> Functions);

public:
LowerTypeTestsModule(Module &M, SummaryAction Action,
LowerTypeTestsModule(Module &M, PassSummaryAction Action,
ModuleSummaryIndex *Summary);
bool lower();

Expand All @@ -348,14 +346,14 @@ struct LowerTypeTests : public ModulePass {

bool UseCommandLine = false;

SummaryAction Action;
PassSummaryAction Action;
ModuleSummaryIndex *Summary;

LowerTypeTests() : ModulePass(ID), UseCommandLine(true) {
initializeLowerTypeTestsPass(*PassRegistry::getPassRegistry());
}

LowerTypeTests(SummaryAction Action, ModuleSummaryIndex *Summary)
LowerTypeTests(PassSummaryAction Action, ModuleSummaryIndex *Summary)
: ModulePass(ID), Action(Action), Summary(Summary) {
initializeLowerTypeTestsPass(*PassRegistry::getPassRegistry());
}
Expand All @@ -375,7 +373,7 @@ INITIALIZE_PASS(LowerTypeTests, "lowertypetests", "Lower type metadata", false,
false)
char LowerTypeTests::ID = 0;

ModulePass *llvm::createLowerTypeTestsPass(SummaryAction Action,
ModulePass *llvm::createLowerTypeTestsPass(PassSummaryAction Action,
ModuleSummaryIndex *Summary) {
return new LowerTypeTests(Action, Summary);
}
Expand Down Expand Up @@ -502,7 +500,7 @@ Value *LowerTypeTestsModule::createBitSetTest(IRBuilder<> &B,
} else {
Constant *ByteArray = TIL.TheByteArray;
if (!LinkerSubsectionsViaSymbols && AvoidReuse &&
Action != SummaryAction::Import) {
Action != PassSummaryAction::Import) {
// Each use of the byte array uses a different alias. This makes the
// backend less likely to reuse previously computed byte array addresses,
// improving the security of the CFI mechanism based on this pass.
Expand Down Expand Up @@ -1292,7 +1290,7 @@ void LowerTypeTestsModule::buildBitSetsFromDisjointSet(
}

/// Lower all type tests in this module.
LowerTypeTestsModule::LowerTypeTestsModule(Module &M, SummaryAction Action,
LowerTypeTestsModule::LowerTypeTestsModule(Module &M, PassSummaryAction Action,
ModuleSummaryIndex *Summary)
: M(M), Action(Action), Summary(Summary) {
Triple TargetTriple(M.getTargetTriple());
Expand Down Expand Up @@ -1338,10 +1336,10 @@ bool LowerTypeTestsModule::lower() {
Function *TypeTestFunc =
M.getFunction(Intrinsic::getName(Intrinsic::type_test));
if ((!TypeTestFunc || TypeTestFunc->use_empty()) &&
Action != SummaryAction::Export)
Action != PassSummaryAction::Export)
return false;

if (Action == SummaryAction::Import) {
if (Action == PassSummaryAction::Import) {
for (auto UI = TypeTestFunc->use_begin(), UE = TypeTestFunc->use_end();
UI != UE;) {
auto *CI = cast<CallInst>((*UI++).getUser());
Expand Down Expand Up @@ -1422,7 +1420,7 @@ bool LowerTypeTestsModule::lower() {
}
}

if (Action == SummaryAction::Export) {
if (Action == PassSummaryAction::Export) {
DenseMap<GlobalValue::GUID, TinyPtrVector<Metadata *>> MetadataByGUID;
for (auto &P : TypeIdInfo) {
if (auto *TypeId = dyn_cast<MDString>(P.first))
Expand Down Expand Up @@ -1502,7 +1500,8 @@ bool LowerTypeTestsModule::lower() {
PreservedAnalyses LowerTypeTestsPass::run(Module &M,
ModuleAnalysisManager &AM) {
bool Changed =
LowerTypeTestsModule(M, SummaryAction::None, /*Summary=*/nullptr).lower();
LowerTypeTestsModule(M, PassSummaryAction::None, /*Summary=*/nullptr)
.lower();
if (!Changed)
return PreservedAnalyses::all();
return PreservedAnalyses::none();
Expand Down
8 changes: 3 additions & 5 deletions lib/Transforms/IPO/PassManagerBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -830,8 +830,7 @@ void PassManagerBuilder::populateThinLTOPassManager(
PM.add(createVerifierPass());

if (Summary)
PM.add(
createLowerTypeTestsPass(LowerTypeTestsSummaryAction::Import, Summary));
PM.add(createLowerTypeTestsPass(PassSummaryAction::Import, Summary));

populateModulePassManager(PM);

Expand All @@ -857,9 +856,8 @@ void PassManagerBuilder::populateLTOPassManager(legacy::PassManagerBase &PM) {
// Lower type metadata and the type.test intrinsic. This pass supports Clang's
// control flow integrity mechanisms (-fsanitize=cfi*) and needs to run at
// link time if CFI is enabled. The pass does nothing if CFI is disabled.
PM.add(createLowerTypeTestsPass(Summary ? LowerTypeTestsSummaryAction::Export
: LowerTypeTestsSummaryAction::None,
Summary));
PM.add(createLowerTypeTestsPass(
Summary ? PassSummaryAction::Export : PassSummaryAction::None, Summary));

if (OptLevel != 0)
addLateLTOOptimizationPasses(PM);
Expand Down

0 comments on commit 637c07c

Please sign in to comment.