mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-05 01:20:51 +03:00
We need to parse mArch ourselves now
Build fix for LLVM r75890
This commit is contained in:
parent
7359448063
commit
ac5bd294ca
3 changed files with 22 additions and 12 deletions
|
@ -205,8 +205,7 @@ cl::opt<std::string> moduleDepsFile("deps",
|
|||
cl::value_desc("filename"));
|
||||
|
||||
|
||||
cl::opt<const llvm::TargetMachineRegistry::entry*, false,
|
||||
llvm::RegistryParser<llvm::TargetMachine> > mArch("march",
|
||||
cl::opt<std::string> mArch("march",
|
||||
cl::desc("Architecture to generate code for:"));
|
||||
|
||||
cl::opt<bool> m32bits("m32",
|
||||
|
|
|
@ -6,8 +6,6 @@
|
|||
#include <deque>
|
||||
#include <vector>
|
||||
|
||||
#include "llvm/Support/RegistryParser.h"
|
||||
#include "llvm/Target/TargetMachineRegistry.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
|
||||
namespace opts {
|
||||
|
@ -37,8 +35,7 @@ namespace opts {
|
|||
extern cl::list<std::string> versions;
|
||||
extern cl::opt<std::string> moduleDepsFile;
|
||||
|
||||
extern cl::opt<const llvm::TargetMachineRegistry::entry*, false,
|
||||
llvm::RegistryParser<llvm::TargetMachine> > mArch;
|
||||
extern cl::opt<std::string> mArch;
|
||||
extern cl::opt<bool> m32bits;
|
||||
extern cl::opt<bool> m64bits;
|
||||
extern cl::opt<std::string> mCPU;
|
||||
|
|
26
gen/main.cpp
26
gen/main.cpp
|
@ -12,7 +12,7 @@
|
|||
#include "llvm/Target/SubtargetFeature.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
#include "llvm/Target/TargetMachineRegistry.h"
|
||||
#include "llvm/Target/TargetRegistry.h"
|
||||
#include "llvm/Target/TargetSelect.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
@ -397,7 +397,7 @@ int main(int argc, char** argv)
|
|||
// check -m32/64 sanity
|
||||
if (m32bits && m64bits)
|
||||
error("cannot use both -m32 and -m64 options");
|
||||
else if ((m32bits || m64bits) && (mArch != 0 || !mTargetTriple.empty()))
|
||||
else if ((m32bits || m64bits) && (!mArch.empty() || !mTargetTriple.empty()))
|
||||
error("-m32 and -m64 switches cannot be used together with -march and -mtriple switches");
|
||||
if (global.errors)
|
||||
fatal();
|
||||
|
@ -415,7 +415,7 @@ int main(int argc, char** argv)
|
|||
// did the user override the target triple?
|
||||
if (mTargetTriple.empty())
|
||||
{
|
||||
if (mArch != 0)
|
||||
if (!mArch.empty())
|
||||
{
|
||||
error("you must specify a target triple as well with -mtriple when using the -march option");
|
||||
fatal();
|
||||
|
@ -437,9 +437,9 @@ int main(int argc, char** argv)
|
|||
LDC_TARGETS
|
||||
#undef LLVM_TARGET
|
||||
|
||||
const llvm::Target *theTarget;
|
||||
const llvm::Target *theTarget = NULL;
|
||||
// Check whether the user has explicitly specified an architecture to compile for.
|
||||
if (mArch == 0)
|
||||
if (mArch.empty())
|
||||
{
|
||||
std::string Err;
|
||||
theTarget = llvm::TargetRegistry::getClosestStaticTargetForModule(mod, Err);
|
||||
|
@ -451,7 +451,21 @@ LDC_TARGETS
|
|||
}
|
||||
else
|
||||
{
|
||||
theTarget = &mArch->TheTarget;
|
||||
for (llvm::TargetRegistry::iterator it = llvm::TargetRegistry::begin(),
|
||||
ie = llvm::TargetRegistry::end(); it != ie; ++it)
|
||||
{
|
||||
if (mArch == it->getName())
|
||||
{
|
||||
theTarget = &*it;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!theTarget)
|
||||
{
|
||||
error("invalid target '%s'", mArch.c_str());
|
||||
fatal();
|
||||
}
|
||||
}
|
||||
|
||||
// Package up features to be passed to target/subtarget
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue