From 87d960c29ae13221655d47d3874f78d7010e7f34 Mon Sep 17 00:00:00 2001 From: Matti Niemenmaa Date: Sat, 2 May 2009 19:03:33 +0300 Subject: [PATCH] Fix build when USE_METADATA is off. --- gen/optimizer.cpp | 21 +++++++++++++++++---- gen/passes/Passes.h | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/gen/optimizer.cpp b/gen/optimizer.cpp index 8d1d2c4c..69c21fbe 100644 --- a/gen/optimizer.cpp +++ b/gen/optimizer.cpp @@ -45,6 +45,7 @@ disableSimplifyRuntimeCalls("disable-simplify-drtcalls", cl::desc("Disable simplification of runtime calls in -O"), cl::ZeroOrMore); +#ifdef USE_METADATA static cl::opt disableGCToStack("disable-gc2stack", cl::desc("Disable promotion of GC allocations to stack memory in -O"), @@ -55,6 +56,7 @@ static cl::opt disableStripMetaData("disable-strip-metadata", cl::desc("Disable default metadata stripping (not recommended)"), cl::ZeroOrMore); +#endif static cl::opt enableInlining("inlining", @@ -104,44 +106,55 @@ static void addPassesForOptLevel(PassManager& pm) { pm.add(createInstructionCombiningPass()); pm.add(createCFGSimplificationPass()); pm.add(createPruneEHPass()); + +#ifdef USE_METADATA if (!disableLangSpecificPasses && !disableGCToStack) pm.add(createGarbageCollect2Stack()); +#endif } // -inline if (doInline()) { pm.add(createFunctionInliningPass()); - + if (optimizeLevel >= 2) { // Run some optimizations to clean up after inlining. pm.add(createScalarReplAggregatesPass()); pm.add(createInstructionCombiningPass()); + +#ifdef USE_METADATA if (!disableLangSpecificPasses && !disableGCToStack) pm.add(createGarbageCollect2Stack()); - +#endif + // Inline again, to catch things like foreach delegates // passed to inlined opApply's where the function wasn't // known during the first inliner pass. pm.add(createFunctionInliningPass()); - + // Run clean-up again. pm.add(createScalarReplAggregatesPass()); pm.add(createInstructionCombiningPass()); + +#ifdef USE_METADATA if (!disableLangSpecificPasses && !disableGCToStack) pm.add(createGarbageCollect2Stack()); +#endif } } if (optimizeLevel >= 2 && !disableLangSpecificPasses) { if (!disableSimplifyRuntimeCalls) pm.add(createSimplifyDRuntimeCalls()); - + +#ifdef USE_METADATA if (!disableGCToStack) { // Run some clean-up after the last GC to stack promotion pass. pm.add(createScalarReplAggregatesPass()); pm.add(createInstructionCombiningPass()); pm.add(createCFGSimplificationPass()); } +#endif } #ifdef USE_METADATA if (!disableStripMetaData) { diff --git a/gen/passes/Passes.h b/gen/passes/Passes.h index 4b954720..6a58b57b 100644 --- a/gen/passes/Passes.h +++ b/gen/passes/Passes.h @@ -9,9 +9,9 @@ namespace llvm { // Performs simplifications on runtime calls. llvm::FunctionPass* createSimplifyDRuntimeCalls(); -llvm::FunctionPass* createGarbageCollect2Stack(); #ifdef USE_METADATA +llvm::FunctionPass* createGarbageCollect2Stack(); llvm::ModulePass *createStripMetaData(); #endif