mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-25 05:25:53 +00:00
Reset the target options and optimization level as the first
thing we do inside selection dag. This code needs to be migrated to queries on the function rather than global data, but this organizes things before we start grabbing the subtarget. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219271 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
48b1918a1b
commit
ede41a93d3
@ -411,23 +411,28 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
|
||||
"-fast-isel-abort requires -fast-isel");
|
||||
|
||||
const Function &Fn = *mf.getFunction();
|
||||
const TargetInstrInfo &TII = *TM.getSubtargetImpl()->getInstrInfo();
|
||||
const TargetRegisterInfo &TRI = *TM.getSubtargetImpl()->getRegisterInfo();
|
||||
|
||||
MF = &mf;
|
||||
RegInfo = &MF->getRegInfo();
|
||||
AA = &getAnalysis<AliasAnalysis>();
|
||||
LibInfo = &getAnalysis<TargetLibraryInfo>();
|
||||
GFI = Fn.hasGC() ? &getAnalysis<GCModuleInfo>().getFunctionInfo(Fn) : nullptr;
|
||||
|
||||
// Reset the target options before resetting the optimization
|
||||
// level below.
|
||||
// FIXME: This is a horrible hack and should be processed via
|
||||
// codegen looking at the optimization level explicitly when
|
||||
// it wants to look at it.
|
||||
TM.resetTargetOptions(Fn);
|
||||
|
||||
// Reset OptLevel to None for optnone functions.
|
||||
CodeGenOpt::Level NewOptLevel = OptLevel;
|
||||
if (Fn.hasFnAttribute(Attribute::OptimizeNone))
|
||||
NewOptLevel = CodeGenOpt::None;
|
||||
OptLevelChanger OLC(*this, NewOptLevel);
|
||||
|
||||
const TargetInstrInfo &TII = *TM.getSubtargetImpl()->getInstrInfo();
|
||||
const TargetRegisterInfo &TRI = *TM.getSubtargetImpl()->getRegisterInfo();
|
||||
|
||||
RegInfo = &MF->getRegInfo();
|
||||
AA = &getAnalysis<AliasAnalysis>();
|
||||
LibInfo = &getAnalysis<TargetLibraryInfo>();
|
||||
GFI = Fn.hasGC() ? &getAnalysis<GCModuleInfo>().getFunctionInfo(Fn) : nullptr;
|
||||
|
||||
DEBUG(dbgs() << "\n\n\n=== " << Fn.getName() << "\n");
|
||||
|
||||
SplitCriticalSideEffectEdges(const_cast<Function&>(Fn), this);
|
||||
|
Loading…
Reference in New Issue
Block a user