diff --git a/opts/ClassIMPCache.cpp b/opts/ClassIMPCache.cpp index d99e371..a407bf6 100644 --- a/opts/ClassIMPCache.cpp +++ b/opts/ClassIMPCache.cpp @@ -8,9 +8,12 @@ #include "llvm/Support/CallSite.h" #include "llvm/Support/IRBuilder.h" #include "llvm/Analysis/LoopInfo.h" +#include "llvm/DefaultPasses.h" +#include "ObjectiveCOpts.h" #include "IMPCacher.h" #include +using namespace GNUstep; using namespace llvm; using std::string; @@ -83,6 +86,15 @@ namespace char ClassIMPCachePass::ID = 0; RegisterPass X("gnu-class-imp-cache", "Cache IMPs for class messages"); +#if LLVM_MAJOR > 2 + StandardPass::RegisterStandardPass D( + StandardPass::Module, &NonfragileIvarID, + StandardPass::OptimzationFlags(2, 0, 0, StandardPass::OptimizeSize), + &ClassIMPCacheID); + StandardPass::RegisterStandardPass L(StandardPass::LTO, + &NonfragileIvarID, StandardPass::OptimzationFlags(0), + &ClassIMPCacheID); +#endif } ModulePass *createClassIMPCachePass(void) diff --git a/opts/ClassLookupCache.cpp b/opts/ClassLookupCache.cpp index cfb5b79..648d71b 100644 --- a/opts/ClassLookupCache.cpp +++ b/opts/ClassLookupCache.cpp @@ -101,7 +101,7 @@ namespace removeTerminator(beforeLookupBB); removeTerminator(lookupBB); - PHINode *phi = CreatePHI(clsTy, 2, cls, afterLookupBB->begin()); + PHINode *phi = CreatePHI(clsTy, 2, cls, afterLookupBB->begin()); // We replace all of the existing uses with the PHI node now, because // we're going to add some more uses later that we don't want // replaced. @@ -150,7 +150,8 @@ namespace #if LLVM_MAJOR > 2 StandardPass::RegisterStandardPass D( StandardPass::Module, &LoopIMPCacheID, - StandardPass::OptimzationFlags(1), &ClassLookupCacheID); + StandardPass::OptimzationFlags(1, 0, 0, StandardPass::OptimizeSize), + &ClassLookupCacheID); StandardPass::RegisterStandardPass L(StandardPass::LTO, &LoopIMPCacheID, StandardPass::OptimzationFlags(0), &ClassLookupCacheID); diff --git a/opts/ClassMethodInliner.cpp b/opts/ClassMethodInliner.cpp index 5a45278..7319081 100644 --- a/opts/ClassMethodInliner.cpp +++ b/opts/ClassMethodInliner.cpp @@ -42,7 +42,6 @@ namespace ClassMethodInliner() : ModulePass(ID) {} virtual bool runOnModule(Module &M) { - return false; unsigned MessageSendMDKind = M.getContext().getMDKindID("GNUObjCMessageSend"); InlineCostAnalyzer CA; SmallPtrSet NeverInline; @@ -105,7 +104,8 @@ namespace #if LLVM_MAJOR > 2 StandardPass::RegisterStandardPass D( StandardPass::Module, &ClassLookupCacheID, - StandardPass::OptimzationFlags(1), &ClassMethodInlinerID); + StandardPass::OptimzationFlags(3, 0, 0, StandardPass::OptimizeSize), + &ClassMethodInlinerID); StandardPass::RegisterStandardPass L(StandardPass::LTO, &ClassLookupCacheID, StandardPass::OptimzationFlags(0), &ClassMethodInlinerID); diff --git a/opts/LoopIMPCachePass.cpp b/opts/LoopIMPCachePass.cpp index 43b101f..fba2f39 100644 --- a/opts/LoopIMPCachePass.cpp +++ b/opts/LoopIMPCachePass.cpp @@ -89,10 +89,11 @@ namespace "Cache IMPs in loops pass"); #if LLVM_MAJOR > 2 StandardPass::RegisterStandardPass D( - StandardPass::Module, &NonfragileIvarID, - StandardPass::OptimzationFlags(1), &LoopIMPCacheID); + StandardPass::Module, &ClassIMPCacheID, + StandardPass::OptimzationFlags(2, 0, 0, StandardPass::OptimizeSize), + &LoopIMPCacheID); StandardPass::RegisterStandardPass L(StandardPass::LTO, - &NonfragileIvarID, StandardPass::OptimzationFlags(0), + &ClassIMPCacheID, StandardPass::OptimzationFlags(0), &LoopIMPCacheID); #endif }