mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-18 18:42:46 +02:00
Prune Analysis includes from SelectionDAG.h
Only forward declarations are needed here. Follow-on to r375311. llvm-svn: 375319
This commit is contained in:
parent
bdc1c0106b
commit
6228488232
@ -34,6 +34,7 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class AAResults;
|
||||
class LiveIntervals;
|
||||
class MachineFrameInfo;
|
||||
class MachineFunction;
|
||||
@ -173,7 +174,7 @@ namespace llvm {
|
||||
/// Tracks the last instructions in this region using each virtual register.
|
||||
VReg2SUnitOperIdxMultiMap CurrentVRegUses;
|
||||
|
||||
AliasAnalysis *AAForDep = nullptr;
|
||||
AAResults *AAForDep = nullptr;
|
||||
|
||||
/// Remember a generic side-effecting instruction as we proceed.
|
||||
/// No other SU ever gets scheduled around it (except in the special
|
||||
@ -201,7 +202,7 @@ namespace llvm {
|
||||
Value2SUsMap &loads, unsigned N);
|
||||
|
||||
/// Adds a chain edge between SUa and SUb, but only if both
|
||||
/// AliasAnalysis and Target fail to deny the dependency.
|
||||
/// AAResults and Target fail to deny the dependency.
|
||||
void addChainDependency(SUnit *SUa, SUnit *SUb,
|
||||
unsigned Latency = 0);
|
||||
|
||||
@ -306,7 +307,7 @@ namespace llvm {
|
||||
/// If \p RPTracker is non-null, compute register pressure as a side effect.
|
||||
/// The DAG builder is an efficient place to do it because it already visits
|
||||
/// operands.
|
||||
void buildSchedGraph(AliasAnalysis *AA,
|
||||
void buildSchedGraph(AAResults *AA,
|
||||
RegPressureTracker *RPTracker = nullptr,
|
||||
PressureDiffs *PDiffs = nullptr,
|
||||
LiveIntervals *LIS = nullptr,
|
||||
|
@ -26,8 +26,6 @@
|
||||
#include "llvm/ADT/ilist.h"
|
||||
#include "llvm/ADT/iterator.h"
|
||||
#include "llvm/ADT/iterator_range.h"
|
||||
#include "llvm/Analysis/AliasAnalysis.h"
|
||||
#include "llvm/Analysis/LegacyDivergenceAnalysis.h"
|
||||
#include "llvm/CodeGen/DAGCombine.h"
|
||||
#include "llvm/CodeGen/FunctionLoweringInfo.h"
|
||||
#include "llvm/CodeGen/ISDOpcodes.h"
|
||||
@ -58,6 +56,7 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class AAResults;
|
||||
class BlockAddress;
|
||||
class Constant;
|
||||
class ConstantFP;
|
||||
@ -66,6 +65,7 @@ class DataLayout;
|
||||
struct fltSemantics;
|
||||
class GlobalValue;
|
||||
struct KnownBits;
|
||||
class LegacyDivergenceAnalysis;
|
||||
class LLVMContext;
|
||||
class MachineBasicBlock;
|
||||
class MachineConstantPoolValue;
|
||||
@ -499,7 +499,7 @@ public:
|
||||
/// certain types of nodes together, or eliminating superfluous nodes. The
|
||||
/// Level argument controls whether Combine is allowed to produce nodes and
|
||||
/// types that are illegal on the target.
|
||||
void Combine(CombineLevel Level, AliasAnalysis *AA,
|
||||
void Combine(CombineLevel Level, AAResults *AA,
|
||||
CodeGenOpt::Level OptLevel);
|
||||
|
||||
/// This transforms the SelectionDAG into a SelectionDAG that
|
||||
|
@ -22,22 +22,23 @@
|
||||
#include <memory>
|
||||
|
||||
namespace llvm {
|
||||
class FastISel;
|
||||
class SelectionDAGBuilder;
|
||||
class SDValue;
|
||||
class MachineRegisterInfo;
|
||||
class MachineBasicBlock;
|
||||
class MachineFunction;
|
||||
class MachineInstr;
|
||||
class OptimizationRemarkEmitter;
|
||||
class TargetLowering;
|
||||
class TargetLibraryInfo;
|
||||
class FunctionLoweringInfo;
|
||||
class ScheduleHazardRecognizer;
|
||||
class SwiftErrorValueTracking;
|
||||
class GCFunctionInfo;
|
||||
class ScheduleDAGSDNodes;
|
||||
class LoadInst;
|
||||
class AAResults;
|
||||
class FastISel;
|
||||
class SelectionDAGBuilder;
|
||||
class SDValue;
|
||||
class MachineRegisterInfo;
|
||||
class MachineBasicBlock;
|
||||
class MachineFunction;
|
||||
class MachineInstr;
|
||||
class OptimizationRemarkEmitter;
|
||||
class TargetLowering;
|
||||
class TargetLibraryInfo;
|
||||
class FunctionLoweringInfo;
|
||||
class ScheduleHazardRecognizer;
|
||||
class SwiftErrorValueTracking;
|
||||
class GCFunctionInfo;
|
||||
class ScheduleDAGSDNodes;
|
||||
class LoadInst;
|
||||
|
||||
/// SelectionDAGISel - This is the common base class used for SelectionDAG-based
|
||||
/// pattern-matching instruction selectors.
|
||||
@ -51,7 +52,7 @@ public:
|
||||
MachineRegisterInfo *RegInfo;
|
||||
SelectionDAG *CurDAG;
|
||||
SelectionDAGBuilder *SDB;
|
||||
AliasAnalysis *AA;
|
||||
AAResults *AA;
|
||||
GCFunctionInfo *GFI;
|
||||
CodeGenOpt::Level OptLevel;
|
||||
const TargetInstrInfo *TII;
|
||||
|
@ -24,6 +24,7 @@
|
||||
|
||||
#include "llvm/CodeGen/DFAPacketizer.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/Analysis/AliasAnalysis.h"
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/CodeGen/MachineInstr.h"
|
||||
#include "llvm/CodeGen/MachineInstrBundle.h"
|
||||
@ -149,13 +150,13 @@ namespace llvm {
|
||||
// to build the dependence graph.
|
||||
class DefaultVLIWScheduler : public ScheduleDAGInstrs {
|
||||
private:
|
||||
AliasAnalysis *AA;
|
||||
AAResults *AA;
|
||||
/// Ordered list of DAG postprocessing steps.
|
||||
std::vector<std::unique_ptr<ScheduleDAGMutation>> Mutations;
|
||||
|
||||
public:
|
||||
DefaultVLIWScheduler(MachineFunction &MF, MachineLoopInfo &MLI,
|
||||
AliasAnalysis *AA);
|
||||
AAResults *AA);
|
||||
|
||||
// Actual scheduling work.
|
||||
void schedule() override;
|
||||
@ -173,7 +174,7 @@ protected:
|
||||
|
||||
DefaultVLIWScheduler::DefaultVLIWScheduler(MachineFunction &MF,
|
||||
MachineLoopInfo &MLI,
|
||||
AliasAnalysis *AA)
|
||||
AAResults *AA)
|
||||
: ScheduleDAGInstrs(MF, &MLI), AA(AA) {
|
||||
CanHandleTerminators = true;
|
||||
}
|
||||
@ -191,7 +192,7 @@ void DefaultVLIWScheduler::schedule() {
|
||||
}
|
||||
|
||||
VLIWPacketizerList::VLIWPacketizerList(MachineFunction &mf,
|
||||
MachineLoopInfo &mli, AliasAnalysis *aa)
|
||||
MachineLoopInfo &mli, AAResults *aa)
|
||||
: MF(mf), TII(mf.getSubtarget().getInstrInfo()), AA(aa) {
|
||||
ResourceTracker = TII->CreateTargetScheduleState(MF.getSubtarget());
|
||||
ResourceTracker->setTrackResources(true);
|
||||
|
@ -18,7 +18,6 @@
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/SparseSet.h"
|
||||
#include "llvm/ADT/iterator_range.h"
|
||||
#include "llvm/Analysis/AliasAnalysis.h"
|
||||
#include "llvm/Analysis/ValueTracking.h"
|
||||
#include "llvm/CodeGen/LiveIntervals.h"
|
||||
#include "llvm/CodeGen/LivePhysRegs.h"
|
||||
@ -532,7 +531,7 @@ void ScheduleDAGInstrs::addVRegUseDeps(SUnit *SU, unsigned OperIdx) {
|
||||
|
||||
/// Returns true if MI is an instruction we are unable to reason about
|
||||
/// (like a call or something with unmodeled side effects).
|
||||
static inline bool isGlobalMemoryObject(AliasAnalysis *AA, MachineInstr *MI) {
|
||||
static inline bool isGlobalMemoryObject(AAResults *AA, MachineInstr *MI) {
|
||||
return MI->isCall() || MI->hasUnmodeledSideEffects() ||
|
||||
(MI->hasOrderedMemoryRef() && !MI->isDereferenceableInvariantLoad(AA));
|
||||
}
|
||||
@ -719,7 +718,7 @@ void ScheduleDAGInstrs::insertBarrierChain(Value2SUsMap &map) {
|
||||
map.reComputeSize();
|
||||
}
|
||||
|
||||
void ScheduleDAGInstrs::buildSchedGraph(AliasAnalysis *AA,
|
||||
void ScheduleDAGInstrs::buildSchedGraph(AAResults *AA,
|
||||
RegPressureTracker *RPTracker,
|
||||
PressureDiffs *PDiffs,
|
||||
LiveIntervals *LIS,
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
#include "llvm/ADT/SmallSet.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/Analysis/TargetLibraryInfo.h"
|
||||
#include "llvm/CodeGen/ISDOpcodes.h"
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/CodeGen/MachineJumpTableInfo.h"
|
||||
|
@ -528,7 +528,7 @@ void ScheduleDAGSDNodes::AddSchedEdges() {
|
||||
/// are input. This SUnit graph is similar to the SelectionDAG, but
|
||||
/// excludes nodes that aren't interesting to scheduling, and represents
|
||||
/// glued together nodes with a single SUnit.
|
||||
void ScheduleDAGSDNodes::BuildSchedGraph(AliasAnalysis *AA) {
|
||||
void ScheduleDAGSDNodes::BuildSchedGraph(AAResults *AA) {
|
||||
// Cluster certain nodes which should be scheduled together.
|
||||
ClusterNodes();
|
||||
// Populate the SUnits array.
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class AAResults;
|
||||
class InstrItineraryData;
|
||||
|
||||
/// ScheduleDAGSDNodes - A ScheduleDAG for scheduling SDNode-based DAGs.
|
||||
@ -93,7 +94,7 @@ class InstrItineraryData;
|
||||
/// are input. This SUnit graph is similar to the SelectionDAG, but
|
||||
/// excludes nodes that aren't interesting to scheduling, and represents
|
||||
/// flagged together nodes with a single SUnit.
|
||||
void BuildSchedGraph(AliasAnalysis *AA);
|
||||
void BuildSchedGraph(AAResults *AA);
|
||||
|
||||
/// InitNumRegDefsLeft - Determine the # of regs defined by this node.
|
||||
///
|
||||
|
@ -63,12 +63,11 @@ private:
|
||||
/// HazardRec - The hazard recognizer to use.
|
||||
ScheduleHazardRecognizer *HazardRec;
|
||||
|
||||
/// AA - AliasAnalysis for making memory reference queries.
|
||||
AliasAnalysis *AA;
|
||||
/// AA - AAResults for making memory reference queries.
|
||||
AAResults *AA;
|
||||
|
||||
public:
|
||||
ScheduleDAGVLIW(MachineFunction &mf,
|
||||
AliasAnalysis *aa,
|
||||
ScheduleDAGVLIW(MachineFunction &mf, AAResults *aa,
|
||||
SchedulingPriorityQueue *availqueue)
|
||||
: ScheduleDAGSDNodes(mf), AvailableQueue(availqueue), AA(aa) {
|
||||
const TargetSubtargetInfo &STI = mf.getSubtarget();
|
||||
|
@ -880,7 +880,7 @@ void TargetInstrInfo::genAlternativeCodeSequence(
|
||||
}
|
||||
|
||||
bool TargetInstrInfo::isReallyTriviallyReMaterializableGeneric(
|
||||
const MachineInstr &MI, AliasAnalysis *AA) const {
|
||||
const MachineInstr &MI, AAResults *AA) const {
|
||||
const MachineFunction &MF = *MI.getMF();
|
||||
const MachineRegisterInfo &MRI = MF.getRegInfo();
|
||||
|
||||
|
@ -38,7 +38,7 @@ WebAssemblyInstrInfo::WebAssemblyInstrInfo(const WebAssemblySubtarget &STI)
|
||||
RI(STI.getTargetTriple()) {}
|
||||
|
||||
bool WebAssemblyInstrInfo::isReallyTriviallyReMaterializable(
|
||||
const MachineInstr &MI, AliasAnalysis *AA) const {
|
||||
const MachineInstr &MI, AAResults *AA) const {
|
||||
switch (MI.getOpcode()) {
|
||||
case WebAssembly::CONST_I32:
|
||||
case WebAssembly::CONST_I64:
|
||||
|
@ -35,6 +35,7 @@
|
||||
|
||||
#include "X86InstrInfo.h"
|
||||
#include "X86Subtarget.h"
|
||||
#include "llvm/Analysis/AliasAnalysis.h"
|
||||
#include "llvm/CodeGen/MachineBasicBlock.h"
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/CodeGen/MachineFunctionPass.h"
|
||||
|
@ -480,7 +480,7 @@ static bool regIsPICBase(unsigned BaseReg, const MachineRegisterInfo &MRI) {
|
||||
}
|
||||
|
||||
bool X86InstrInfo::isReallyTriviallyReMaterializable(const MachineInstr &MI,
|
||||
AliasAnalysis *AA) const {
|
||||
AAResults *AA) const {
|
||||
switch (MI.getOpcode()) {
|
||||
default:
|
||||
// This function should only be called for opcodes with the ReMaterializable
|
||||
|
Loading…
Reference in New Issue
Block a user