mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Fix the ridiculous SubtargetFeatures API where it implicitly expects CPU name to
be the first encoded as the first feature. It then uses the CPU name to look up features / scheduling itineray even though clients know full well the CPU name being used to query these properties. The fix is to just have the clients explictly pass the CPU name! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134127 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -16,10 +16,13 @@
|
||||
#include "AlphaGenSubtarget.inc"
|
||||
using namespace llvm;
|
||||
|
||||
AlphaSubtarget::AlphaSubtarget(const std::string &TT, const std::string &FS)
|
||||
AlphaSubtarget::AlphaSubtarget(const std::string &TT, const std::string &CPU,
|
||||
const std::string &FS)
|
||||
: HasCT(false) {
|
||||
std::string CPU = "generic";
|
||||
std::string CPUName = CPU;
|
||||
if (CPUName.empty())
|
||||
CPUName = "generic";
|
||||
|
||||
// Parse features string.
|
||||
ParseSubtargetFeatures(FS, CPU);
|
||||
ParseSubtargetFeatures(FS, CPUName);
|
||||
}
|
||||
|
@@ -31,12 +31,12 @@ public:
|
||||
/// This constructor initializes the data members to match that
|
||||
/// of the specified triple.
|
||||
///
|
||||
AlphaSubtarget(const std::string &TT, const std::string &FS);
|
||||
AlphaSubtarget(const std::string &TT, const std::string &CPU,
|
||||
const std::string &FS);
|
||||
|
||||
/// ParseSubtargetFeatures - Parses features string setting specified
|
||||
/// subtarget options. Definition of function is auto generated by tblgen.
|
||||
std::string ParseSubtargetFeatures(const std::string &FS,
|
||||
const std::string &CPU);
|
||||
void ParseSubtargetFeatures(const std::string &FS, const std::string &CPU);
|
||||
|
||||
bool hasCT() const { return HasCT; }
|
||||
};
|
||||
|
@@ -25,11 +25,12 @@ extern "C" void LLVMInitializeAlphaTarget() {
|
||||
}
|
||||
|
||||
AlphaTargetMachine::AlphaTargetMachine(const Target &T, const std::string &TT,
|
||||
const std::string &CPU,
|
||||
const std::string &FS)
|
||||
: LLVMTargetMachine(T, TT),
|
||||
DataLayout("e-f128:128:128-n64"),
|
||||
FrameLowering(Subtarget),
|
||||
Subtarget(TT, FS),
|
||||
Subtarget(TT, CPU, FS),
|
||||
TLInfo(*this),
|
||||
TSInfo(*this) {
|
||||
setRelocationModel(Reloc::PIC_);
|
||||
|
@@ -37,7 +37,7 @@ class AlphaTargetMachine : public LLVMTargetMachine {
|
||||
|
||||
public:
|
||||
AlphaTargetMachine(const Target &T, const std::string &TT,
|
||||
const std::string &FS);
|
||||
const std::string &CPU, const std::string &FS);
|
||||
|
||||
virtual const AlphaInstrInfo *getInstrInfo() const { return &InstrInfo; }
|
||||
virtual const TargetFrameLowering *getFrameLowering() const {
|
||||
|
Reference in New Issue
Block a user