Commit 026d581a authored by Adéla Štěpková's avatar Adéla Štěpková
Browse files

add reg2mem pass to preprocessing

parent db1ef82d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/Mem2Reg.h"
#include "llvm/Transforms/Utils/FixIrreducible.h"
#include "llvm/Transforms/Scalar/Reg2Mem.h"

namespace llvm {

@@ -54,6 +55,7 @@ public:

    // PASSES
    void mem2Reg();
    void reg2Mem();
    void globalDCE();
    void fixIrreducible();
    void preprocessForCustomOpt();
+12 −2
Original line number Diff line number Diff line
@@ -25,6 +25,15 @@ void PassDriver::mem2Reg()
    MPM.run(module, MAM);
}

void PassDriver::reg2Mem()
{
    FunctionPassManager FPM;
    ModulePassManager MPM;
    FPM.addPass(RegToMemPass());
    MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM)));
    MPM.run(module, MAM);
}

void PassDriver::globalDCE()
{
    auto preserveMain = [](const GlobalValue& GV) -> bool { return GV.getName() == "main"; };
@@ -57,11 +66,12 @@ void PassDriver::finalPostprocessing()
    FPM.addPass(DCEPass());
    // MPM.addPass(AttributorPass());
    MPM.addPass(GlobalDCEPass());
    FPM.addPass(PromotePass());
    FPM.addPass(DSEPass());
    FPM.addPass(SimplifyCFGPass());
    FPM.addPass(InstCombinePass());
    // FPM.addPass(GVNPass());
    MPM.addPass(InternalizePass(preserveMain));
    FPM.addPass(PromotePass());
    FPM.addPass(DSEPass());

    MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM)));
    MPM.run(module, MAM);
+2 −2
Original line number Diff line number Diff line
@@ -28,8 +28,8 @@

void ModuleReverser::runPreprocessingPasses()
{
    // PassDriver driver(*origModule);
    // driver.simplifyCFG();
    PassDriver driver(*origModule);
    driver.reg2Mem();
}

void ModuleReverser::runPostprocessLLVMPasses(Module& revModule)