mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-12 07:37:34 +00:00
Grab TargetInstrInfo off of the MachineFunction and remove
unnecessary class variables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227830 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1754d31c4b
commit
b06a938123
@ -34,7 +34,7 @@ namespace llvm {
|
||||
FunctionPass *createHexagonDelaySlotFillerPass(const TargetMachine &TM);
|
||||
FunctionPass *createHexagonFPMoverPass(const TargetMachine &TM);
|
||||
FunctionPass *createHexagonRemoveExtendArgs(const HexagonTargetMachine &TM);
|
||||
FunctionPass *createHexagonCFGOptimizer(const HexagonTargetMachine &TM);
|
||||
FunctionPass *createHexagonCFGOptimizer();
|
||||
|
||||
FunctionPass *createHexagonSplitTFRCondSets(const HexagonTargetMachine &TM);
|
||||
FunctionPass *createHexagonSplitConst32AndConst64(
|
||||
|
@ -37,15 +37,11 @@ namespace {
|
||||
class HexagonCFGOptimizer : public MachineFunctionPass {
|
||||
|
||||
private:
|
||||
const HexagonTargetMachine& QTM;
|
||||
const HexagonSubtarget &QST;
|
||||
|
||||
void InvertAndChangeJumpTarget(MachineInstr*, MachineBasicBlock*);
|
||||
|
||||
public:
|
||||
static char ID;
|
||||
HexagonCFGOptimizer(const HexagonTargetMachine& TM)
|
||||
: MachineFunctionPass(ID), QTM(TM), QST(*TM.getSubtargetImpl()) {
|
||||
HexagonCFGOptimizer() : MachineFunctionPass(ID) {
|
||||
initializeHexagonCFGOptimizerPass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
@ -72,7 +68,8 @@ static bool IsUnconditionalJump(int Opc) {
|
||||
void
|
||||
HexagonCFGOptimizer::InvertAndChangeJumpTarget(MachineInstr* MI,
|
||||
MachineBasicBlock* NewTarget) {
|
||||
const HexagonInstrInfo *QII = QTM.getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII =
|
||||
MI->getParent()->getParent()->getSubtarget().getInstrInfo();
|
||||
int NewOpcode = 0;
|
||||
switch(MI->getOpcode()) {
|
||||
case Hexagon::J2_jumpt:
|
||||
@ -95,13 +92,12 @@ HexagonCFGOptimizer::InvertAndChangeJumpTarget(MachineInstr* MI,
|
||||
llvm_unreachable("Cannot handle this case");
|
||||
}
|
||||
|
||||
MI->setDesc(QII->get(NewOpcode));
|
||||
MI->setDesc(TII->get(NewOpcode));
|
||||
MI->getOperand(1).setMBB(NewTarget);
|
||||
}
|
||||
|
||||
|
||||
bool HexagonCFGOptimizer::runOnMachineFunction(MachineFunction &Fn) {
|
||||
|
||||
// Loop over all of the basic blocks.
|
||||
for (MachineFunction::iterator MBBb = Fn.begin(), MBBe = Fn.end();
|
||||
MBBb != MBBe; ++MBBb) {
|
||||
@ -248,6 +244,6 @@ void llvm::initializeHexagonCFGOptimizerPass(PassRegistry &Registry) {
|
||||
CALL_ONCE_INITIALIZATION(initializePassOnce)
|
||||
}
|
||||
|
||||
FunctionPass *llvm::createHexagonCFGOptimizer(const HexagonTargetMachine &TM) {
|
||||
return new HexagonCFGOptimizer(TM);
|
||||
FunctionPass *llvm::createHexagonCFGOptimizer() {
|
||||
return new HexagonCFGOptimizer();
|
||||
}
|
||||
|
@ -138,10 +138,9 @@ void HexagonPassConfig::addPreRegAlloc() {
|
||||
}
|
||||
|
||||
void HexagonPassConfig::addPostRegAlloc() {
|
||||
const HexagonTargetMachine &TM = getHexagonTargetMachine();
|
||||
if (getOptLevel() != CodeGenOpt::None)
|
||||
if (!DisableHexagonCFGOpt)
|
||||
addPass(createHexagonCFGOptimizer(TM), false);
|
||||
addPass(createHexagonCFGOptimizer(), false);
|
||||
}
|
||||
|
||||
void HexagonPassConfig::addPreSched2() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user