diff options
author | Gordon Henriksen <gordonhenriksen@mac.com> | 2008-08-17 12:56:54 +0000 |
---|---|---|
committer | Gordon Henriksen <gordonhenriksen@mac.com> | 2008-08-17 12:56:54 +0000 |
commit | 5a29c9eed157af51a8d338b5a225b146881819e8 (patch) | |
tree | 5b3d6361013f6491b7c1178eef88ac30a08de64c /lib/CodeGen | |
parent | c317a60c2714a5b90700a11ba646285cb754a5d3 (diff) |
Factor GC metadata table assembly generation out of Collector in preparation for splitting AsmPrinter into its own library.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54881 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/AsmPrinter.cpp | 6 | ||||
-rw-r--r-- | lib/CodeGen/GCMetadata.cpp (renamed from lib/CodeGen/CollectorMetadata.cpp) | 6 | ||||
-rw-r--r-- | lib/CodeGen/GCMetadataPrinter.cpp | 31 | ||||
-rw-r--r-- | lib/CodeGen/GCStrategy.cpp (renamed from lib/CodeGen/Collector.cpp) | 20 | ||||
-rw-r--r-- | lib/CodeGen/GCs.cpp (renamed from lib/CodeGen/Collectors.cpp) | 2 | ||||
-rw-r--r-- | lib/CodeGen/LLVMTargetMachine.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/OcamlGC.cpp | 46 | ||||
-rw-r--r-- | lib/CodeGen/OcamlGCPrinter.cpp (renamed from lib/CodeGen/OcamlCollector.cpp) | 25 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/ShadowStackGC.cpp (renamed from lib/CodeGen/ShadowStackCollector.cpp) | 4 |
10 files changed, 94 insertions, 50 deletions
diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp index 3b2dcb31d2..de31840d70 100644 --- a/lib/CodeGen/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter.cpp @@ -16,9 +16,9 @@ #include "llvm/DerivedTypes.h" #include "llvm/Constants.h" #include "llvm/Module.h" -#include "llvm/CodeGen/Collector.h" -#include "llvm/CodeGen/CollectorMetadata.h" -#include "llvm/CodeGen/Collectors.h" +#include "llvm/CodeGen/GCStrategy.h" +#include "llvm/CodeGen/GCMetadata.h" +#include "llvm/CodeGen/GCs.h" #include "llvm/CodeGen/MachineConstantPool.h" #include "llvm/CodeGen/MachineJumpTableInfo.h" #include "llvm/CodeGen/MachineModuleInfo.h" diff --git a/lib/CodeGen/CollectorMetadata.cpp b/lib/CodeGen/GCMetadata.cpp index 5b8c7c7999..c02a73b708 100644 --- a/lib/CodeGen/CollectorMetadata.cpp +++ b/lib/CodeGen/GCMetadata.cpp @@ -12,9 +12,9 @@ // //===----------------------------------------------------------------------===// -#include "llvm/CodeGen/CollectorMetadata.h" -#include "llvm/CodeGen/Collector.h" -#include "llvm/CodeGen/Collectors.h" +#include "llvm/CodeGen/GCMetadata.h" +#include "llvm/CodeGen/GCStrategy.h" +#include "llvm/CodeGen/GCs.h" #include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/Pass.h" #include "llvm/CodeGen/Passes.h" diff --git a/lib/CodeGen/GCMetadataPrinter.cpp b/lib/CodeGen/GCMetadataPrinter.cpp new file mode 100644 index 0000000000..b16d873520 --- /dev/null +++ b/lib/CodeGen/GCMetadataPrinter.cpp @@ -0,0 +1,31 @@ +//===-- Collector.cpp - Garbage collection infrastructure -----------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements target- and collector-independent garbage collection +// infrastructure. +// +//===----------------------------------------------------------------------===// + +#include "llvm/CodeGen/GCStrategy.h" + +using namespace llvm; + +GCMetadataPrinter::GCMetadataPrinter() { } + +GCMetadataPrinter::~GCMetadataPrinter() { } + +void GCMetadataPrinter::beginAssembly(std::ostream &OS, AsmPrinter &AP, + const TargetAsmInfo &TAI) { + // Default is no action. +} + +void GCMetadataPrinter::finishAssembly(std::ostream &OS, AsmPrinter &AP, + const TargetAsmInfo &TAI) { + // Default is no action. +} diff --git a/lib/CodeGen/Collector.cpp b/lib/CodeGen/GCStrategy.cpp index 6fd018961a..629a2e13de 100644 --- a/lib/CodeGen/Collector.cpp +++ b/lib/CodeGen/GCStrategy.cpp @@ -12,12 +12,10 @@ // //===----------------------------------------------------------------------===// -#include "llvm/CodeGen/Collector.h" +#include "llvm/CodeGen/GCStrategy.h" #include "llvm/CodeGen/Passes.h" #include "llvm/IntrinsicInst.h" #include "llvm/Module.h" -#include "llvm/PassManager.h" -#include "llvm/ADT/SmallPtrSet.h" #include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineInstrBuilder.h" @@ -119,22 +117,6 @@ CollectorMetadata *Collector::insertFunctionMetadata(const Function &F) { // ----------------------------------------------------------------------------- -GCMetadataPrinter::GCMetadataPrinter() { } - -GCMetadataPrinter::~GCMetadataPrinter() { } - -void GCMetadataPrinter::beginAssembly(std::ostream &OS, AsmPrinter &AP, - const TargetAsmInfo &TAI) { - // Default is no action. -} - -void GCMetadataPrinter::finishAssembly(std::ostream &OS, AsmPrinter &AP, - const TargetAsmInfo &TAI) { - // Default is no action. -} - -// ----------------------------------------------------------------------------- - FunctionPass *llvm::createGCLoweringPass() { return new LowerIntrinsics(); } diff --git a/lib/CodeGen/Collectors.cpp b/lib/CodeGen/GCs.cpp index 3b0c554daf..124725358e 100644 --- a/lib/CodeGen/Collectors.cpp +++ b/lib/CodeGen/GCs.cpp @@ -11,7 +11,7 @@ // //===----------------------------------------------------------------------===// -#include "llvm/CodeGen/Collectors.h" +#include "llvm/CodeGen/GCs.h" using namespace llvm; diff --git a/lib/CodeGen/LLVMTargetMachine.cpp b/lib/CodeGen/LLVMTargetMachine.cpp index 97fe35c2f4..d420ffb7d9 100644 --- a/lib/CodeGen/LLVMTargetMachine.cpp +++ b/lib/CodeGen/LLVMTargetMachine.cpp @@ -17,7 +17,7 @@ #include "llvm/Assembly/PrintModulePass.h" #include "llvm/Analysis/LoopPass.h" #include "llvm/CodeGen/Passes.h" -#include "llvm/CodeGen/Collector.h" +#include "llvm/CodeGen/GCStrategy.h" #include "llvm/Target/TargetOptions.h" #include "llvm/Target/TargetAsmInfo.h" #include "llvm/Transforms/Scalar.h" diff --git a/lib/CodeGen/OcamlGC.cpp b/lib/CodeGen/OcamlGC.cpp new file mode 100644 index 0000000000..88499cbd66 --- /dev/null +++ b/lib/CodeGen/OcamlGC.cpp @@ -0,0 +1,46 @@ +//===-- OcamlCollector.cpp - Ocaml frametable emitter ---------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements lowering for the llvm.gc* intrinsics compatible with +// Objective Caml 3.10.0, which uses a liveness-accurate static stack map. +// +//===----------------------------------------------------------------------===// + +#include "llvm/CodeGen/GCs.h" +#include "llvm/CodeGen/AsmPrinter.h" +#include "llvm/CodeGen/GCStrategy.h" +#include "llvm/Module.h" +#include "llvm/Target/TargetAsmInfo.h" +#include "llvm/Target/TargetData.h" +#include "llvm/Target/TargetMachine.h" + +using namespace llvm; + +namespace { + + class VISIBILITY_HIDDEN OcamlCollector : public Collector { + public: + OcamlCollector(); + }; + +} + +static CollectorRegistry::Add<OcamlCollector> +X("ocaml", "ocaml 3.10-compatible collector"); + +// ----------------------------------------------------------------------------- + +Collector *llvm::createOcamlCollector() { + return new OcamlCollector(); +} + +OcamlCollector::OcamlCollector() { + NeededSafePoints = 1 << GC::PostCall; + UsesMetadata = true; +} diff --git a/lib/CodeGen/OcamlCollector.cpp b/lib/CodeGen/OcamlGCPrinter.cpp index 7f58f58c29..efa7f67276 100644 --- a/lib/CodeGen/OcamlCollector.cpp +++ b/lib/CodeGen/OcamlGCPrinter.cpp @@ -12,9 +12,9 @@ // //===----------------------------------------------------------------------===// -#include "llvm/CodeGen/Collectors.h" +#include "llvm/CodeGen/GCs.h" #include "llvm/CodeGen/AsmPrinter.h" -#include "llvm/CodeGen/Collector.h" +#include "llvm/CodeGen/GCStrategy.h" #include "llvm/Module.h" #include "llvm/Target/TargetAsmInfo.h" #include "llvm/Target/TargetData.h" @@ -24,11 +24,6 @@ using namespace llvm; namespace { - class VISIBILITY_HIDDEN OcamlCollector : public Collector { - public: - OcamlCollector(); - }; - class VISIBILITY_HIDDEN OcamlGCMetadataPrinter : public GCMetadataPrinter { public: void beginAssembly(std::ostream &OS, AsmPrinter &AP, @@ -40,13 +35,12 @@ namespace { } -static CollectorRegistry::Add<OcamlCollector> -X("ocaml", "ocaml 3.10-compatible collector"); - static GCMetadataPrinterRegistry::Add<OcamlGCMetadataPrinter> Y("ocaml", "ocaml 3.10-compatible collector"); -// ----------------------------------------------------------------------------- +GCMetadataPrinter *llvm::createOcamlMetadataPrinter() { + return new OcamlGCMetadataPrinter(); +} static void EmitCamlGlobal(const Module &M, std::ostream &OS, AsmPrinter &AP, const TargetAsmInfo &TAI, const char *Id) { @@ -68,15 +62,6 @@ static void EmitCamlGlobal(const Module &M, std::ostream &OS, AsmPrinter &AP, OS << Mangled << ":\n"; } -Collector *llvm::createOcamlCollector() { - return new OcamlCollector(); -} - -OcamlCollector::OcamlCollector() { - NeededSafePoints = 1 << GC::PostCall; - UsesMetadata = true; -} - void OcamlGCMetadataPrinter::beginAssembly(std::ostream &OS, AsmPrinter &AP, const TargetAsmInfo &TAI) { AP.SwitchToTextSection(TAI.getTextSection()); diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 815fdb7cc7..012e7d0992 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -26,7 +26,7 @@ #include "llvm/Intrinsics.h" #include "llvm/IntrinsicInst.h" #include "llvm/ParameterAttributes.h" -#include "llvm/CodeGen/Collector.h" +#include "llvm/CodeGen/GCStrategy.h" #include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/CodeGen/MachineInstrBuilder.h" diff --git a/lib/CodeGen/ShadowStackCollector.cpp b/lib/CodeGen/ShadowStackGC.cpp index 4d275a6eb9..850c00542c 100644 --- a/lib/CodeGen/ShadowStackCollector.cpp +++ b/lib/CodeGen/ShadowStackGC.cpp @@ -26,9 +26,9 @@ //===----------------------------------------------------------------------===// #define DEBUG_TYPE "shadowstackgc" -#include "llvm/CodeGen/Collectors.h" +#include "llvm/CodeGen/GCs.h" #include "llvm/ADT/StringExtras.h" -#include "llvm/CodeGen/Collector.h" +#include "llvm/CodeGen/GCStrategy.h" #include "llvm/IntrinsicInst.h" #include "llvm/Module.h" #include "llvm/Support/IRBuilder.h" |