#define LLVM_TARGET_TARGETJITINFO_H
#include <cassert>
+#include <vector>
namespace llvm {
class Function;
class FunctionPassManager;
+ class MachineBasicBlock;
class MachineCodeEmitter;
class MachineRelocation;
public:
virtual ~TargetJITInfo() {}
- /// addPassesToJITCompile - Add passes to the specified pass manager to
- /// implement a fast code generator for this target.
- ///
- virtual void addPassesToJITCompile(FunctionPassManager &PM) = 0;
-
/// replaceMachineCodeForFunction - Make it so that calling the function
/// whose machine code is at OLD turns into a call to NEW, perhaps by
/// overwriting OLD with a branch to NEW. This is used for self-modifying
/// it must rewrite the code to contain the actual addresses of any
/// referenced global symbols.
virtual void relocate(void *Function, MachineRelocation *MR,
- unsigned NumRelocs) {
+ unsigned NumRelocs, unsigned char* GOTBase) {
assert(NumRelocs == 0 && "This target does not have relocations!");
}
+
+ /// needsGOT - Allows a target to specify that it would like the
+ // JIT to manage a GOT for it.
+ bool needsGOT() const { return useGOT; }
+
+ protected:
+ bool useGOT;
};
} // End llvm namespace