Allow specific optimization passes to be requested from the command line.

Now you can run "`ldc test.d -c -mem2reg -simplifycfg`" if you feel the urge.
The -O<N> options are still supported, and are inserted in the passes list in
the position where they appear on the command line.
(so -simplifycfg -O1 -instcombine does the "right thing")

One small change: -inline is renamed to -enable-inlining due to a naming
conflict with the option to add the -inline pass. -inline now inserts the
inlining pass in the position specified, not in the middle of -O<N>.
(ldmd has been updated to translate -inline to -enable-inlining)
This commit is contained in:
Frits van Bommel
2009-03-29 15:46:55 +02:00
parent f179acda32
commit e129494812
8 changed files with 115 additions and 54 deletions

View File

@@ -13,6 +13,7 @@
#define NO_COUT_LOGGER
#include "gen/logger.h"
#include "gen/cl_options.h"
#include "gen/optimizer.h"
//////////////////////////////////////////////////////////////////////////////
@@ -111,12 +112,12 @@ int linkExecutable(const char* argv0)
args.push_back("-strip-debug");
// optimization level
if (!global.params.optimize)
if (!optimize())
args.push_back("-disable-opt");
else
{
const char* s = 0;
switch(global.params.optimizeLevel)
switch(optLevel())
{
case 0:
args.push_back("-disable-opt");
@@ -138,7 +139,7 @@ int linkExecutable(const char* argv0)
}
// inlining
if (!(global.params.useInline || global.params.llvmInline))
if (!(global.params.useInline || doInline()))
{
args.push_back("-disable-inlining");
}