mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-22 07:43:18 +01:00
[svn r135] * Merged DMD 1.025 *
* Fixed a minor linking order mishap * * Added an command line option -annotate * * Fixed some problems with running optimizations * * Added std.stdio and dependencies to lphobos (still not 100% working, but compiles and links) * * Fixed problems with passing aggregate types to variadic functions * * Added initial code towards full GC support, currently based on malloc and friends, not all the runtime calls the GC yet for memory * * Fixed problems with resolving nested function context pointers for some heavily nested cases * * Redid function argument passing + other minor code cleanups, still lots to do on this end... *
This commit is contained in:
@@ -12,11 +12,22 @@ using namespace llvm;
|
||||
|
||||
void llvmdc_optimize_module(Module* m, char lvl, bool doinline)
|
||||
{
|
||||
if (!doinline && lvl < 0)
|
||||
return;
|
||||
|
||||
assert(lvl >= 0 && lvl <= 5);
|
||||
|
||||
PassManager pm;
|
||||
pm.add(new TargetData(m));
|
||||
|
||||
// -O0
|
||||
if (lvl >= 0)
|
||||
{
|
||||
//pm.add(createStripDeadPrototypesPass());
|
||||
pm.add(createGlobalDCEPass());
|
||||
}
|
||||
|
||||
// -O1
|
||||
if (lvl >= 1)
|
||||
{
|
||||
pm.add(createRaiseAllocationsPass());
|
||||
@@ -26,6 +37,7 @@ void llvmdc_optimize_module(Module* m, char lvl, bool doinline)
|
||||
pm.add(createGlobalDCEPass());
|
||||
}
|
||||
|
||||
// -O2
|
||||
if (lvl >= 2)
|
||||
{
|
||||
pm.add(createIPConstantPropagationPass());
|
||||
@@ -35,10 +47,12 @@ void llvmdc_optimize_module(Module* m, char lvl, bool doinline)
|
||||
pm.add(createPruneEHPass());
|
||||
}
|
||||
|
||||
// -inline
|
||||
if (doinline) {
|
||||
pm.add(createFunctionInliningPass());
|
||||
}
|
||||
|
||||
// -O3
|
||||
if (lvl >= 3)
|
||||
{
|
||||
pm.add(createArgumentPromotionPass());
|
||||
@@ -73,8 +87,7 @@ void llvmdc_optimize_module(Module* m, char lvl, bool doinline)
|
||||
pm.add(createConstantMergePass());
|
||||
}
|
||||
|
||||
// level 4 and 5 are linktime optimizations
|
||||
// level -O4 and -O5 are linktime optimizations
|
||||
|
||||
if (lvl > 0 || doinline)
|
||||
pm.run(*m);
|
||||
pm.run(*m);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user