mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-30 06:40:53 +00:00
Provide InitializeAllTargets and InitializeNativeTarget functions in the
C bindings. Change all the backend "Initialize" functions to have C linkage. Change the "llvm/Config/Targets.def" header to use C-style comments to avoid compile warnings. llvm-svn: 74026
This commit is contained in:
parent
813ea8a8a7
commit
7bd642b80c
@ -20,6 +20,7 @@
|
||||
#define LLVM_C_TARGET_H
|
||||
|
||||
#include "llvm-c/Core.h"
|
||||
#include "llvm/Config/config.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -31,6 +32,34 @@ typedef int LLVMByteOrdering;
|
||||
typedef struct LLVMOpaqueTargetData *LLVMTargetDataRef;
|
||||
typedef struct LLVMStructLayout *LLVMStructLayoutRef;
|
||||
|
||||
/* Declare all of the target-initialization functions that are available. */
|
||||
#define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##Target();
|
||||
#include "llvm/Config/Targets.def"
|
||||
|
||||
/** LLVMInitializeAllTargets - The main program should call this function if it
|
||||
wants to link in all available targets that LLVM is configured to
|
||||
support. */
|
||||
static inline void LLVMInitializeAllTargets() {
|
||||
#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##Target();
|
||||
#include "llvm/Config/Targets.def"
|
||||
}
|
||||
|
||||
/** LLVMInitializeNativeTarget - The main program should call this function to
|
||||
initialize the native target corresponding to the host. This is useful
|
||||
for JIT applications to ensure that the target gets linked in correctly. */
|
||||
static inline int LLVMInitializeNativeTarget() {
|
||||
/* If we have a native target, initialize it to ensure it is linked in. */
|
||||
#ifdef LLVM_NATIVE_ARCH
|
||||
#define DoInit2(TARG) LLVMInitialize ## TARG ()
|
||||
#define DoInit(T) DoInit2(T)
|
||||
DoInit(LLVM_NATIVE_ARCH);
|
||||
return 0;
|
||||
#undef DoInit
|
||||
#undef DoInit2
|
||||
#else
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*===-- Target Data -------------------------------------------------------===*/
|
||||
|
||||
|
@ -1,23 +1,23 @@
|
||||
//===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file enumerates all of the target architectures supported by
|
||||
// this build of LLVM. Clients of this file should define the
|
||||
// LLVM_TARGET macro to be a function-like macro with a single
|
||||
// parameter (the name of the target); including this file will then
|
||||
// enumerate all of the targets.
|
||||
//
|
||||
// The set of targets supported by LLVM is generated at configuration
|
||||
// time, at which point this header is generated. Do not modify this
|
||||
// header directly.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
/*===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===*\
|
||||
|* *|
|
||||
|* The LLVM Compiler Infrastructure *|
|
||||
|* *|
|
||||
|* This file is distributed under the University of Illinois Open Source *|
|
||||
|* License. See LICENSE.TXT for details. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*|
|
||||
|* *|
|
||||
|* This file enumerates all of the target architectures supported by *|
|
||||
|* this build of LLVM. Clients of this file should define the *|
|
||||
|* LLVM_TARGET macro to be a function-like macro with a single *|
|
||||
|* parameter (the name of the target); including this file will then *|
|
||||
|* enumerate all of the targets. *|
|
||||
|* *|
|
||||
|* The set of targets supported by LLVM is generated at configuration *|
|
||||
|* time, at which point this header is generated. Do not modify this *|
|
||||
|* header directly. *|
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#ifndef LLVM_TARGET
|
||||
# error Please define the macro LLVM_TARGET(TargetName)
|
||||
|
@ -18,20 +18,21 @@
|
||||
|
||||
#include "llvm/Config/config.h"
|
||||
|
||||
namespace llvm {
|
||||
extern "C" {
|
||||
// Declare all of the target-initialization functions that are available.
|
||||
#define LLVM_TARGET(TargetName) void Initialize##TargetName##Target();
|
||||
#define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##Target();
|
||||
#include "llvm/Config/Targets.def"
|
||||
|
||||
// Declare all of the available asm-printer initialization functions.
|
||||
// Declare all of the target-initialization functions.
|
||||
#define LLVM_ASM_PRINTER(TargetName) void Initialize##TargetName##AsmPrinter();
|
||||
#define LLVM_ASM_PRINTER(TargetName) void LLVMInitialize##TargetName##AsmPrinter();
|
||||
#include "llvm/Config/AsmPrinters.def"
|
||||
|
||||
}
|
||||
|
||||
namespace llvm {
|
||||
/// InitializeAllTargets - The main program should call this function if it
|
||||
/// wants to link in all available targets that LLVM is configured to support.
|
||||
inline void InitializeAllTargets() {
|
||||
#define LLVM_TARGET(TargetName) llvm::Initialize##TargetName##Target();
|
||||
#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##Target();
|
||||
#include "llvm/Config/Targets.def"
|
||||
}
|
||||
|
||||
@ -39,18 +40,17 @@ namespace llvm {
|
||||
/// it wants all asm printers that LLVM is configured to support. This will
|
||||
/// cause them to be linked into its executable.
|
||||
inline void InitializeAllAsmPrinters() {
|
||||
#define LLVM_ASM_PRINTER(TargetName) Initialize##TargetName##AsmPrinter();
|
||||
#define LLVM_ASM_PRINTER(TargetName) LLVMInitialize##TargetName##AsmPrinter();
|
||||
#include "llvm/Config/AsmPrinters.def"
|
||||
}
|
||||
|
||||
|
||||
/// InitializeNativeTarget - The main program should call this function to
|
||||
/// initialize the native target corresponding to the host. This is useful
|
||||
/// for JIT applications to ensure that the target gets linked in correctly.
|
||||
inline bool InitializeNativeTarget() {
|
||||
// If we have a native target, initialize it to ensure it is linked in.
|
||||
#ifdef LLVM_NATIVE_ARCH
|
||||
#define DoInit2(TARG) llvm::Initialize ## TARG ()
|
||||
#define DoInit2(TARG) LLVMInitialize ## TARG ()
|
||||
#define DoInit(T) DoInit2(T)
|
||||
DoInit(LLVM_NATIVE_ARCH);
|
||||
return false;
|
||||
|
@ -39,10 +39,8 @@ int ARMTargetMachineModule = 0;
|
||||
static RegisterTarget<ARMTargetMachine> X("arm", "ARM");
|
||||
static RegisterTarget<ThumbTargetMachine> Y("thumb", "Thumb");
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeARMTarget() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeARMTarget() { }
|
||||
|
||||
// No assembler printer by default
|
||||
ARMTargetMachine::AsmPrinterCtorFn ARMTargetMachine::AsmPrinterCtor = 0;
|
||||
|
@ -1172,8 +1172,5 @@ namespace {
|
||||
} Registrator;
|
||||
}
|
||||
|
||||
// Force static initialization when called from
|
||||
// llvm/InitializeAllAsmPrinters.h
|
||||
namespace llvm {
|
||||
void InitializeARMAsmPrinter() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeARMAsmPrinter() { }
|
||||
|
@ -27,10 +27,8 @@ static RegisterTarget<AlphaTargetMachine> X("alpha", "Alpha [experimental]");
|
||||
// No assembler printer by default
|
||||
AlphaTargetMachine::AsmPrinterCtorFn AlphaTargetMachine::AsmPrinterCtor = 0;
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeAlphaTarget() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeAlphaTarget() { }
|
||||
|
||||
const TargetAsmInfo *AlphaTargetMachine::createTargetAsmInfo() const {
|
||||
return new AlphaTargetAsmInfo(*this);
|
||||
|
@ -304,11 +304,8 @@ bool AlphaAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI,
|
||||
return false;
|
||||
}
|
||||
|
||||
// Force static initialization when called from
|
||||
// llvm/InitializeAllAsmPrinters.h
|
||||
namespace llvm {
|
||||
void InitializeAlphaAsmPrinter() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeAlphaAsmPrinter() { }
|
||||
|
||||
namespace {
|
||||
static struct Register {
|
||||
|
@ -59,10 +59,8 @@ int CBackendTargetMachineModule = 0;
|
||||
// Register the target.
|
||||
static RegisterTarget<CTargetMachine> X("c", "C backend");
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeCBackendTarget() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeCBackendTarget() { }
|
||||
|
||||
namespace {
|
||||
/// CBackendNameAllUsedStructsAndMergeFunctions - This pass inserts names for
|
||||
|
@ -617,11 +617,8 @@ FunctionPass *llvm::createSPUAsmPrinterPass(raw_ostream &o,
|
||||
return new LinuxAsmPrinter(o, tm, tm.getTargetAsmInfo(), OptLevel, verbose);
|
||||
}
|
||||
|
||||
// Force static initialization when called from
|
||||
// llvm/InitializeAllAsmPrinters.h
|
||||
namespace llvm {
|
||||
void InitializeCellSPUAsmPrinter() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeCellSPUAsmPrinter() { }
|
||||
|
||||
namespace {
|
||||
static struct Register {
|
||||
|
@ -32,10 +32,8 @@ namespace {
|
||||
// No assembler printer by default
|
||||
SPUTargetMachine::AsmPrinterCtorFn SPUTargetMachine::AsmPrinterCtor = 0;
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeCellSPUTarget() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeCellSPUTarget() { }
|
||||
|
||||
const std::pair<unsigned, int> *
|
||||
SPUFrameInfo::getCalleeSaveSpillSlots(unsigned &NumEntries) const {
|
||||
|
@ -82,10 +82,8 @@ int CppBackendTargetMachineModule = 0;
|
||||
// Register the target.
|
||||
static RegisterTarget<CPPTargetMachine> X("cpp", "C++ backend");
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeCppBackendTarget() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeCppBackendTarget() { }
|
||||
|
||||
namespace {
|
||||
typedef std::vector<const Type*> TypeList;
|
||||
|
@ -384,8 +384,5 @@ namespace {
|
||||
}
|
||||
|
||||
|
||||
// Force static initialization when called from
|
||||
// llvm/InitializeAllAsmPrinters.h
|
||||
namespace llvm {
|
||||
void InitializeIA64AsmPrinter() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeIA64AsmPrinter() { }
|
||||
|
@ -26,10 +26,8 @@ static RegisterTarget<IA64TargetMachine> X("ia64",
|
||||
// No assembler printer by default
|
||||
IA64TargetMachine::AsmPrinterCtorFn IA64TargetMachine::AsmPrinterCtor = 0;
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeIA64Target() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeIA64Target() { }
|
||||
|
||||
const TargetAsmInfo *IA64TargetMachine::createTargetAsmInfo() const {
|
||||
return new IA64TargetAsmInfo(*this);
|
||||
|
@ -55,10 +55,8 @@ int MSILTargetMachineModule = 0;
|
||||
|
||||
static RegisterTarget<MSILTarget> X("msil", "MSIL backend");
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeMSILTarget() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeMSILTarget() { }
|
||||
|
||||
bool MSILModule::runOnModule(Module &M) {
|
||||
ModulePtr = &M;
|
||||
|
@ -35,10 +35,8 @@ int MSP430TargetMachineModule = 0;
|
||||
static RegisterTarget<MSP430TargetMachine>
|
||||
X("msp430", "MSP430 [experimental]");
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeMSP430Target() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeMSP430Target() { }
|
||||
|
||||
MSP430TargetMachine::MSP430TargetMachine(const Module &M,
|
||||
const std::string &FS) :
|
||||
|
@ -587,8 +587,5 @@ namespace {
|
||||
} Registrator;
|
||||
}
|
||||
|
||||
// Force static initialization when called from
|
||||
// llvm/InitializeAllAsmPrinters.h
|
||||
namespace llvm {
|
||||
void InitializeMipsAsmPrinter() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeMipsAsmPrinter() { }
|
||||
|
@ -34,10 +34,8 @@ static RegisterTarget<MipselTargetMachine> Y("mipsel", "Mipsel");
|
||||
MipsTargetMachine::AsmPrinterCtorFn MipsTargetMachine::AsmPrinterCtor = 0;
|
||||
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeMipsTarget() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeMipsTarget() { }
|
||||
|
||||
const TargetAsmInfo *MipsTargetMachine::
|
||||
createTargetAsmInfo() const
|
||||
|
@ -37,10 +37,8 @@ X("pic16", "PIC16 14-bit [experimental].");
|
||||
static RegisterTarget<CooperTargetMachine>
|
||||
Y("cooper", "PIC16 Cooper [experimental].");
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializePIC16Target() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializePIC16Target() { }
|
||||
|
||||
// PIC16TargetMachine - Traditional PIC16 Machine.
|
||||
PIC16TargetMachine::PIC16TargetMachine(const Module &M, const std::string &FS,
|
||||
|
@ -1185,8 +1185,5 @@ namespace {
|
||||
extern "C" int PowerPCAsmPrinterForceLink;
|
||||
int PowerPCAsmPrinterForceLink = 0;
|
||||
|
||||
// Force static initialization when called from
|
||||
// llvm/InitializeAllAsmPrinters.h
|
||||
namespace llvm {
|
||||
void InitializePowerPCAsmPrinter() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializePowerPCAsmPrinter() { }
|
||||
|
@ -35,10 +35,8 @@ X("ppc32", "PowerPC 32");
|
||||
static RegisterTarget<PPC64TargetMachine>
|
||||
Y("ppc64", "PowerPC 64");
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializePowerPCTarget() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializePowerPCTarget() { }
|
||||
|
||||
// No assembler printer by default
|
||||
PPCTargetMachine::AsmPrinterCtorFn PPCTargetMachine::AsmPrinterCtor = 0;
|
||||
|
@ -362,8 +362,5 @@ namespace {
|
||||
} Registrator;
|
||||
}
|
||||
|
||||
// Force static initialization when called from
|
||||
// llvm/InitializeAllAsmPrinters.h
|
||||
namespace llvm {
|
||||
void InitializeSparcAsmPrinter() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeSparcAsmPrinter() { }
|
||||
|
@ -25,10 +25,8 @@ static RegisterTarget<SparcTargetMachine> X("sparc", "SPARC");
|
||||
SparcTargetMachine::AsmPrinterCtorFn SparcTargetMachine::AsmPrinterCtor = 0;
|
||||
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeSparcTarget() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeSparcTarget() { }
|
||||
|
||||
const TargetAsmInfo *SparcTargetMachine::createTargetAsmInfo() const {
|
||||
// FIXME: Handle Solaris subtarget someday :)
|
||||
|
@ -47,8 +47,5 @@ namespace {
|
||||
extern "C" int X86AsmPrinterForceLink;
|
||||
int X86AsmPrinterForceLink = 0;
|
||||
|
||||
// Force static initialization when called from
|
||||
// llvm/InitializeAllAsmPrinters.h
|
||||
namespace llvm {
|
||||
void InitializeX86AsmPrinter() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeX86AsmPrinter() { }
|
||||
|
@ -36,10 +36,8 @@ X("x86", "32-bit X86: Pentium-Pro and above");
|
||||
static RegisterTarget<X86_64TargetMachine>
|
||||
Y("x86-64", "64-bit X86: EM64T and AMD64");
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeX86Target() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeX86Target() { }
|
||||
|
||||
// No assembler printer by default
|
||||
X86TargetMachine::AsmPrinterCtorFn X86TargetMachine::AsmPrinterCtor = 0;
|
||||
|
@ -31,10 +31,8 @@ namespace {
|
||||
RegisterTarget<XCoreTargetMachine> X("xcore", "XCore");
|
||||
}
|
||||
|
||||
// Force static initialization when called from llvm/InitializeAllTargets.h
|
||||
namespace llvm {
|
||||
void InitializeXCoreTarget() { }
|
||||
}
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeXCoreTarget() { }
|
||||
|
||||
const TargetAsmInfo *XCoreTargetMachine::createTargetAsmInfo() const {
|
||||
return new XCoreTargetAsmInfo(*this);
|
||||
|
Loading…
Reference in New Issue
Block a user