[llvm] r186853 - Initialize/Register LTO passes to enable flags like -print-after=<lto-pass>
Nick Lewycky
nicholas at mxc.ca
Mon Jul 22 22:35:57 PDT 2013
Shuxin Yang wrote:
> Author: shuxin_yang
> Date: Mon Jul 22 13:40:34 2013
> New Revision: 186853
>
> URL: http://llvm.org/viewvc/llvm-project?rev=186853&view=rev
> Log:
> Initialize/Register LTO passes to enable flags like -print-after=<lto-pass>
>
> There already have two "dead" functions, initialize{IPO|IPA}, defined for
> similar purpose. I decide not to call these two functions for two reasons:
> o. they don't cover all LTO passes (which will soon be separated into IPO
> and post-IPO passes)
> o. We have not yet figured out the right passes and the ordering for IPO
> and post-IPO stages, meaning this change is only for the time being.
>
> Since LTO passes are registered, we are now able to print IR before and
> after particular point.
>
> For OSX users:
> --------------
> "...-Wl,-mllvm -Wl,-print-after=<pass-name>" will print IR after the
> specified pass.
>
> For Other UNIX with GNU gold linker:
> ------------------------------------
> "-Wl,-plugin-opt=-print-after=<pass-name>" should work.
> (NOTE: no need for "-Wl,-mllvm")
>
> Strip "-Wl," if flags are fed directly to linker instead of clang/clang++.
>
> Modified:
> llvm/trunk/tools/lto/LTOCodeGenerator.cpp
> llvm/trunk/tools/lto/LTOCodeGenerator.h
>
> Modified: llvm/trunk/tools/lto/LTOCodeGenerator.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lto/LTOCodeGenerator.cpp?rev=186853&r1=186852&r2=186853&view=diff
> ==============================================================================
> --- llvm/trunk/tools/lto/LTOCodeGenerator.cpp (original)
> +++ llvm/trunk/tools/lto/LTOCodeGenerator.cpp Mon Jul 22 13:40:34 2013
> @@ -24,6 +24,7 @@
> #include "llvm/IR/DerivedTypes.h"
> #include "llvm/IR/LLVMContext.h"
> #include "llvm/IR/Module.h"
> +#include "llvm/InitializePasses.h"
> #include "llvm/Linker.h"
> #include "llvm/MC/MCAsmInfo.h"
> #include "llvm/MC/MCContext.h"
> @@ -77,6 +78,7 @@ LTOCodeGenerator::LTOCodeGenerator()
> InitializeAllTargets();
> InitializeAllTargetMCs();
> InitializeAllAsmPrinters();
> + initializeLTOPasses();
> }
>
> LTOCodeGenerator::~LTOCodeGenerator() {
> @@ -89,6 +91,36 @@ LTOCodeGenerator::~LTOCodeGenerator() {
> free(*I);
> }
>
> +// Initialize LTO passes. Please keep this funciton in sync with
> +// PassManagerBuilder::populateLTOPassManager(), and make sure all LTO
Two spaces in "and make" should be one space.
Nick
> +// passes are initialized.
> +//
> +void LTOCodeGenerator::initializeLTOPasses() {
> + PassRegistry&R = *PassRegistry::getPassRegistry();
> +
> + initializeInternalizePassPass(R);
> + initializeIPSCCPPass(R);
> + initializeGlobalOptPass(R);
> + initializeConstantMergePass(R);
> + initializeDAHPass(R);
> + initializeInstCombinerPass(R);
> + initializeSimpleInlinerPass(R);
> + initializePruneEHPass(R);
> + initializeGlobalDCEPass(R);
> + initializeArgPromotionPass(R);
> + initializeJumpThreadingPass(R);
> + initializeSROAPass(R);
> + initializeSROA_DTPass(R);
> + initializeSROA_SSAUpPass(R);
> + initializeFunctionAttrsPass(R);
> + initializeGlobalsModRefPass(R);
> + initializeLICMPass(R);
> + initializeGVNPass(R);
> + initializeMemCpyOptPass(R);
> + initializeDCEPass(R);
> + initializeCFGSimplifyPassPass(R);
> +}
> +
> bool LTOCodeGenerator::addModule(LTOModule* mod, std::string& errMsg) {
> bool ret = _linker.linkInModule(mod->getLLVVMModule(),&errMsg);
>
>
> Modified: llvm/trunk/tools/lto/LTOCodeGenerator.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lto/LTOCodeGenerator.h?rev=186853&r1=186852&r2=186853&view=diff
> ==============================================================================
> --- llvm/trunk/tools/lto/LTOCodeGenerator.h (original)
> +++ llvm/trunk/tools/lto/LTOCodeGenerator.h Mon Jul 22 13:40:34 2013
> @@ -56,6 +56,8 @@ struct LTOCodeGenerator {
> void setCodeGenDebugOptions(const char *opts);
>
> private:
> + void initializeLTOPasses();
> +
> bool generateObjectFile(llvm::raw_ostream&out, std::string&errMsg);
> void applyScopeRestrictions();
> void applyRestriction(llvm::GlobalValue&GV,
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list