aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/CodeGen/MachineCodeEmitter.h7
-rw-r--r--lib/CodeGen/ELFWriter.cpp5
-rw-r--r--lib/CodeGen/MachineCodeEmitter.cpp7
3 files changed, 14 insertions, 5 deletions
diff --git a/include/llvm/CodeGen/MachineCodeEmitter.h b/include/llvm/CodeGen/MachineCodeEmitter.h
index 59c5b614af..f5ee2e6237 100644
--- a/include/llvm/CodeGen/MachineCodeEmitter.h
+++ b/include/llvm/CodeGen/MachineCodeEmitter.h
@@ -94,11 +94,8 @@ public:
//
virtual uint64_t getConstantPoolEntryAddress(unsigned Index) = 0;
- // allocateGlobal - Allocate some space for a global variable. This is
- // used by the JIT to allocate space in the global variable region.
- virtual unsigned char* allocateGlobal(unsigned size, unsigned alignment) {
- return new unsigned char[(size_t)size];
- }
+ // allocateGlobal - Allocate some space for a global variable.
+ virtual unsigned char* allocateGlobal(unsigned size, unsigned alignment) = 0;
/// createDebugEmitter - Return a dynamically allocated machine
/// code emitter, which just prints the opcodes and fields out the cout. This
diff --git a/lib/CodeGen/ELFWriter.cpp b/lib/CodeGen/ELFWriter.cpp
index 7963b658d6..cdbc13a20f 100644
--- a/lib/CodeGen/ELFWriter.cpp
+++ b/lib/CodeGen/ELFWriter.cpp
@@ -85,6 +85,11 @@ namespace llvm {
return 0;
}
+ virtual unsigned char* allocateGlobal(unsigned size, unsigned alignment) {
+ assert(0 && "Globals not implemented yet!");
+ return 0;
+ }
+
/// JIT SPECIFIC FUNCTIONS - DO NOT IMPLEMENT THESE HERE!
void startFunctionStub(unsigned StubSize) {
assert(0 && "JIT specific function called!");
diff --git a/lib/CodeGen/MachineCodeEmitter.cpp b/lib/CodeGen/MachineCodeEmitter.cpp
index 3037cba297..1090d762d7 100644
--- a/lib/CodeGen/MachineCodeEmitter.cpp
+++ b/lib/CodeGen/MachineCodeEmitter.cpp
@@ -51,6 +51,9 @@ namespace {
std::cout << "<relocation> ";
}
+ virtual unsigned char* allocateGlobal(unsigned size, unsigned alignment)
+ { return 0; }
+
uint64_t getConstantPoolEntryAddress(unsigned Num) { return 0; }
uint64_t getCurrentPCValue() { return 0; }
uint64_t getCurrentPCOffset() { return 0; }
@@ -142,6 +145,10 @@ namespace {
uint64_t getConstantPoolEntryAddress(unsigned Num) {
return MCE.getConstantPoolEntryAddress(Num);
}
+
+ virtual unsigned char* allocateGlobal(unsigned size, unsigned alignment)
+ { return MCE.allocateGlobal(size, alignment); }
+
uint64_t getCurrentPCValue() {
return MCE.getCurrentPCValue();
}