mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-10-25 10:27:04 +00:00
Teach regular and fast isel to set dead flags on unused implicit defs
on calls and similar instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106353 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -36,6 +36,7 @@ class TargetInstrInfo;
|
||||
class TargetLowering;
|
||||
class TargetMachine;
|
||||
class TargetRegisterClass;
|
||||
class TargetRegisterInfo;
|
||||
|
||||
/// FastISel - This is a fast-path instruction selection class that
|
||||
/// generates poor code and doesn't support illegal types or non-trivial
|
||||
@@ -60,6 +61,7 @@ protected:
|
||||
const TargetData &TD;
|
||||
const TargetInstrInfo &TII;
|
||||
const TargetLowering &TLI;
|
||||
const TargetRegisterInfo &TRI;
|
||||
bool IsBottomUp;
|
||||
|
||||
public:
|
||||
|
||||
@@ -364,6 +364,11 @@ public:
|
||||
void addRegisterDefined(unsigned IncomingReg,
|
||||
const TargetRegisterInfo *RegInfo = 0);
|
||||
|
||||
/// setPhysRegsDeadExcept - Mark every physreg used by this instruction as dead
|
||||
/// except those in the UsedRegs list.
|
||||
void setPhysRegsDeadExcept(const SmallVectorImpl<unsigned> &UsedRegs,
|
||||
const TargetRegisterInfo &TRI);
|
||||
|
||||
/// isSafeToMove - Return true if it is safe to move this instruction. If
|
||||
/// SawStore is set to true, it means that there is a store (or call) between
|
||||
/// the instruction's location and its intended destination.
|
||||
|
||||
@@ -549,6 +549,15 @@ public:
|
||||
return FoundNode;
|
||||
}
|
||||
|
||||
/// getFlaggedUser - If this node has a flag value with a user, return
|
||||
/// the user (there is at most one). Otherwise return NULL.
|
||||
SDNode *getFlaggedUser() const {
|
||||
for (use_iterator UI = use_begin(), UE = use_end(); UI != UE; ++UI)
|
||||
if (UI.getUse().get().getValueType() == MVT::Flag)
|
||||
return *UI;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// getNumValues - Return the number of values defined/returned by this
|
||||
/// operator.
|
||||
///
|
||||
|
||||
Reference in New Issue
Block a user