mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-28 09:31:03 +00:00
Fix llvm-mc target detection code to match llc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136115 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5acaeb5121
commit
d6dcf39ca8
@ -170,21 +170,42 @@ static const Target *GetTarget(const char *ProgName) {
|
|||||||
// Figure out the target triple.
|
// Figure out the target triple.
|
||||||
if (TripleName.empty())
|
if (TripleName.empty())
|
||||||
TripleName = sys::getHostTriple();
|
TripleName = sys::getHostTriple();
|
||||||
|
Triple TheTriple(Triple::normalize(TripleName));
|
||||||
|
|
||||||
|
const Target *TheTarget = 0;
|
||||||
if (!ArchName.empty()) {
|
if (!ArchName.empty()) {
|
||||||
llvm::Triple TT(TripleName);
|
for (TargetRegistry::iterator it = TargetRegistry::begin(),
|
||||||
TT.setArchName(ArchName);
|
ie = TargetRegistry::end(); it != ie; ++it) {
|
||||||
TripleName = TT.str();
|
if (ArchName == it->getName()) {
|
||||||
|
TheTarget = &*it;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TheTarget) {
|
||||||
|
errs() << ProgName << ": error: invalid target '" << ArchName << "'.\n";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adjust the triple to match (if known), otherwise stick with the
|
||||||
|
// module/host triple.
|
||||||
|
Triple::ArchType Type = Triple::getArchTypeForLLVMName(ArchName);
|
||||||
|
if (Type != Triple::UnknownArch)
|
||||||
|
TheTriple.setArch(Type);
|
||||||
|
} else {
|
||||||
|
// Get the target specific parser.
|
||||||
|
std::string Error;
|
||||||
|
TheTarget = TargetRegistry::lookupTarget(TheTriple.getTriple(), Error);
|
||||||
|
if (TheTarget == 0) {
|
||||||
|
errs() << ProgName << ": error: unable to get target for '"
|
||||||
|
<< TheTriple.getTriple()
|
||||||
|
<< "', see --version and --triple.\n";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the target specific parser.
|
TripleName = TheTriple.getTriple();
|
||||||
std::string Error;
|
return TheTarget;
|
||||||
const Target *TheTarget = TargetRegistry::lookupTarget(TripleName, Error);
|
|
||||||
if (TheTarget)
|
|
||||||
return TheTarget;
|
|
||||||
|
|
||||||
errs() << ProgName << ": error: unable to get target for '" << TripleName
|
|
||||||
<< "', see --version and --triple.\n";
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static tool_output_file *GetOutputStream() {
|
static tool_output_file *GetOutputStream() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user