From 6e4edd65ab8c963288f5c03f2b9a7a0a5c08971e Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 23 May 2004 21:23:35 +0000 Subject: [PATCH] Add support for accurate garbage collection to the LLVM code generators llvm-svn: 13696 --- llvm/lib/Target/CBackend/Writer.cpp | 1 + llvm/lib/Target/SparcV9/SparcV9TargetMachine.cpp | 6 ++++++ llvm/lib/Target/X86/X86TargetMachine.cpp | 5 +++++ 3 files changed, 12 insertions(+) diff --git a/llvm/lib/Target/CBackend/Writer.cpp b/llvm/lib/Target/CBackend/Writer.cpp index 6e536f072988..222fc82d1972 100644 --- a/llvm/lib/Target/CBackend/Writer.cpp +++ b/llvm/lib/Target/CBackend/Writer.cpp @@ -1498,6 +1498,7 @@ void CWriter::visitVAArgInst(VAArgInst &I) { //===----------------------------------------------------------------------===// bool CTargetMachine::addPassesToEmitAssembly(PassManager &PM, std::ostream &o) { + PM.add(createLowerGCPass()); PM.add(createLowerAllocationsPass()); PM.add(createLowerInvokePass()); PM.add(new CBackendNameAllUsedStructs()); diff --git a/llvm/lib/Target/SparcV9/SparcV9TargetMachine.cpp b/llvm/lib/Target/SparcV9/SparcV9TargetMachine.cpp index c5d815c987e7..06efeb31e256 100644 --- a/llvm/lib/Target/SparcV9/SparcV9TargetMachine.cpp +++ b/llvm/lib/Target/SparcV9/SparcV9TargetMachine.cpp @@ -125,6 +125,9 @@ SparcV9TargetMachine::SparcV9TargetMachine(IntrinsicLowering *il) bool SparcV9TargetMachine::addPassesToEmitAssembly(PassManager &PM, std::ostream &Out) { + // FIXME: Implement efficient support for garbage collection intrinsics. + PM.add(createLowerGCPass()); + // Replace malloc and free instructions with library calls. PM.add(createLowerAllocationsPass()); @@ -199,6 +202,9 @@ SparcV9TargetMachine::addPassesToEmitAssembly(PassManager &PM, std::ostream &Out /// generation for the UltraSparcV9. /// void SparcV9JITInfo::addPassesToJITCompile(FunctionPassManager &PM) { + // FIXME: Implement efficient support for garbage collection intrinsics. + PM.add(createLowerGCPass()); + // Replace malloc and free instructions with library calls. PM.add(createLowerAllocationsPass()); diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp index 0d9a0d6e40ea..a1884a6725ed 100644 --- a/llvm/lib/Target/X86/X86TargetMachine.cpp +++ b/llvm/lib/Target/X86/X86TargetMachine.cpp @@ -59,6 +59,9 @@ X86TargetMachine::X86TargetMachine(const Module &M, IntrinsicLowering *IL) // does to emit statically compiled machine code. bool X86TargetMachine::addPassesToEmitAssembly(PassManager &PM, std::ostream &Out) { + // FIXME: Implement efficient support for garbage collection intrinsics. + PM.add(createLowerGCPass()); + // FIXME: Implement the invoke/unwind instructions! PM.add(createLowerInvokePass()); @@ -117,6 +120,8 @@ bool X86TargetMachine::addPassesToEmitAssembly(PassManager &PM, /// not supported for this target. /// void X86JITInfo::addPassesToJITCompile(FunctionPassManager &PM) { + // FIXME: Implement efficient support for garbage collection intrinsics. + PM.add(createLowerGCPass()); // FIXME: Implement the invoke/unwind instructions! PM.add(createLowerInvokePass());