Set global.params.isOS variables so we do not have to modify dmd frontend to use targetTriple

This commit is contained in:
Alexey Prokhin
2013-07-29 18:49:09 +04:00
parent fb31047dcd
commit 54078eca66
6 changed files with 18 additions and 19 deletions

View File

@@ -588,11 +588,7 @@ void ClassDeclaration::semantic(Scope *sc)
if (isCOMclass())
{
#if IN_LLVM
if (global.params.targetTriple.isOSWindows())
#else
if (global.params.isWindows)
#endif
sc->linkage = LINKwindows;
else
/* This enables us to use COM objects under Linux and

View File

@@ -160,11 +160,7 @@ char *cpp_mangle(Dsymbol *s)
cms.components.setDim(0);
OutBuffer buf;
#if IN_LLVM
buf.writestring("__Z" + !(global.params.targetTriple.isMacOSX())); // "_Z" for OSX
#else
buf.writestring("__Z" + !global.params.isOSX); // "_Z" for OSX
#endif
cpp_mangle_name(&buf, &cms, s);

View File

@@ -1888,16 +1888,8 @@ void FuncDeclaration::semantic3(Scope *sc)
if (cd)
{
if (!global.params.is64bit &&
#if IN_LLVM
global.params.targetTriple.isOSWindows() &&
#else
global.params.isWindows &&
#endif
!isStatic() && !fbody->usesEH()
#if !IN_LLVM
&& !global.params.trace
#endif
)
!isStatic() && !fbody->usesEH() && !global.params.trace)
{
/* The back end uses the "jmonitor" hack for syncing;
* no need to do the sync at this level.

View File

@@ -162,7 +162,14 @@ struct Param
bool vtls; // identify thread local variables
bool vfield; // identify non-mutable field variables
ubyte symdebug; // insert debug symbolic information
bool trace; // insert profiling hooks
bool is64bit; // generate 64 bit code
bool isLinux; // generate code for linux
bool isOSX; // generate code for Mac OSX
bool isWindows; // generate code for Windows
bool isFreeBSD; // generate code for FreeBSD
bool isOpenBSD; // generate code for OpenBSD
bool isSolaris; // generate code for Solaris
#else
char dll; // generate shared dynamic library
char lib; // write library file instead of object file(s)

View File

@@ -993,7 +993,7 @@ enum LINK Parser::parseLinkage()
else if (id == Id::System)
{
#if IN_LLVM
if (global.params.targetTriple.isOSWindows())
if (global.params.isWindows)
link = LINKwindows;
else
link = LINKc;

View File

@@ -475,7 +475,15 @@ int main(int argc, char** argv)
gTargetMachine = createTargetMachine(mTargetTriple, mArch, mCPU, mAttrs, bitness,
mRelocModel, mCodeModel, codeGenOptLevel(), global.params.symdebug);
global.params.targetTriple = llvm::Triple(gTargetMachine->getTargetTriple());
llvm::Triple targetTriple = llvm::Triple(gTargetMachine->getTargetTriple());
global.params.targetTriple = targetTriple;
global.params.trace = false;
global.params.isLinux = targetTriple.getOS() == llvm::Triple::Linux;
global.params.isOSX = targetTriple.isMacOSX();
global.params.isWindows = targetTriple.isOSWindows();
global.params.isFreeBSD = targetTriple.getOS() == llvm::Triple::FreeBSD;
global.params.isOpenBSD = targetTriple.getOS() == llvm::Triple::OpenBSD;
global.params.isSolaris = targetTriple.getOS() == llvm::Triple::Solaris;
#if LDC_LLVM_VER >= 302
gDataLayout = gTargetMachine->getDataLayout();