Enabling the target-independent garbage collection infrastructure by hooking it

up to the various compiler pipelines.

This doesn't actually add support for any GC algorithms, which means it 
temporarily breaks a few tests. To be fixed shortly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45669 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Gordon Henriksen
2008-01-07 01:30:38 +00:00
parent 7e40ad5106
commit ce2247755e
7 changed files with 71 additions and 11 deletions

View File

@@ -24,6 +24,7 @@
#include "llvm/Support/MathExtras.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/CodeGen/Passes.h"
namespace {
// TargetMachine for the MSIL
@@ -1647,12 +1648,13 @@ bool MSILTarget::addPassesToEmitWholeFile(PassManager &PM, std::ostream &o,
{
if (FileType != TargetMachine::AssemblyFile) return true;
MSILWriter* Writer = new MSILWriter(o);
PM.add(createLowerGCPass());
PM.add(createGCLoweringPass());
PM.add(createLowerAllocationsPass(true));
// FIXME: Handle switch trougth native IL instruction "switch"
PM.add(createLowerSwitchPass());
PM.add(createCFGSimplificationPass());
PM.add(new MSILModule(Writer->UsedTypes,Writer->TD));
PM.add(Writer);
PM.add(createCollectorMetadataDeleter());
return false;
}