mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-15 23:31:37 +00:00
Refactor the way to get a string containing the features of the target.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52470 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f7acf8f288
commit
e424254897
@ -264,22 +264,9 @@ bool LTOCodeGenerator::determineTarget(std::string& errMsg)
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
// construct LTModule, hand over ownership of module and target
|
// construct LTModule, hand over ownership of module and target
|
||||||
//
|
std::string FeatureStr =
|
||||||
// FIXME: This is an inelegant way of specifying the features of a
|
getFeatureString(_linker.getModule()->getTargetTriple().c_str());
|
||||||
// subtarget. It would be better if we could encode this information
|
_target = march->CtorFn(*mergedModule, FeatureStr.c_str());
|
||||||
// into the IR. See <rdar://5972456>.
|
|
||||||
SubtargetFeatures Features;
|
|
||||||
std::string FeatureStr;
|
|
||||||
std::string TargetTriple = _linker.getModule()->getTargetTriple();
|
|
||||||
|
|
||||||
if (strncmp(TargetTriple.c_str(), "powerpc-apple-", 14) == 0) {
|
|
||||||
Features.AddFeature("altivec", true);
|
|
||||||
} else if (strncmp(TargetTriple.c_str(), "powerpc64-apple-", 16) == 0) {
|
|
||||||
Features.AddFeature("64bit", true);
|
|
||||||
Features.AddFeature("altivec", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
_target = march->CtorFn(*mergedModule, Features.getString());
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -116,6 +116,25 @@ LTOModule* LTOModule::makeLTOModule(const void* mem, size_t length,
|
|||||||
return makeLTOModule(buffer.get(), errMsg);
|
return makeLTOModule(buffer.get(), errMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// getFeatureString - Return a string listing the features associated with the
|
||||||
|
/// target triple.
|
||||||
|
///
|
||||||
|
/// FIXME: This is an inelegant way of specifying the features of a
|
||||||
|
/// subtarget. It would be better if we could encode this information into the
|
||||||
|
/// IR. See <rdar://5972456>.
|
||||||
|
std::string getFeatureString(const char *TargetTriple) {
|
||||||
|
SubtargetFeatures Features;
|
||||||
|
|
||||||
|
if (strncmp(TargetTriple, "powerpc-apple-", 14) == 0) {
|
||||||
|
Features.AddFeature("altivec", true);
|
||||||
|
} else if (strncmp(TargetTriple, "powerpc64-apple-", 16) == 0) {
|
||||||
|
Features.AddFeature("64bit", true);
|
||||||
|
Features.AddFeature("altivec", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Features.getString();
|
||||||
|
}
|
||||||
|
|
||||||
LTOModule* LTOModule::makeLTOModule(MemoryBuffer* buffer, std::string& errMsg)
|
LTOModule* LTOModule::makeLTOModule(MemoryBuffer* buffer, std::string& errMsg)
|
||||||
{
|
{
|
||||||
// parse bitcode buffer
|
// parse bitcode buffer
|
||||||
@ -130,22 +149,8 @@ LTOModule* LTOModule::makeLTOModule(MemoryBuffer* buffer, std::string& errMsg)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
// construct LTModule, hand over ownership of module and target
|
// construct LTModule, hand over ownership of module and target
|
||||||
//
|
std::string FeatureStr = getFeatureString(m->getTargetTriple().c_str());
|
||||||
// FIXME: This is an inelegant way of specifying the features of a
|
TargetMachine* target = march->CtorFn(*m, FeatureStr);
|
||||||
// subtarget. It would be better if we could encode this information into
|
|
||||||
// the IR. See <rdar://5972456>.
|
|
||||||
SubtargetFeatures Features;
|
|
||||||
std::string FeatureStr;
|
|
||||||
const char *TargetTriple = m->getTargetTriple().c_str();
|
|
||||||
|
|
||||||
if (strncmp(TargetTriple, "powerpc-apple-", 14) == 0) {
|
|
||||||
Features.AddFeature("altivec", true);
|
|
||||||
} else if (strncmp(TargetTriple, "powerpc64-apple-", 16) == 0) {
|
|
||||||
Features.AddFeature("64bit", true);
|
|
||||||
Features.AddFeature("altivec", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
TargetMachine* target = march->CtorFn(*m, Features.getString());
|
|
||||||
return new LTOModule(m.take(), target);
|
return new LTOModule(m.take(), target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,5 +99,7 @@ private:
|
|||||||
StringSet _undefines;
|
StringSet _undefines;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern std::string getFeatureString(const char *TargetTriple);
|
||||||
|
|
||||||
#endif // LTO_MODULE_H
|
#endif // LTO_MODULE_H
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user