projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove 3 includes from MCInstrDesc.h and explicitly include them where needed
[oota-llvm.git]
/
include
/
llvm
/
CodeGen
/
LiveVariables.h
diff --git
a/include/llvm/CodeGen/LiveVariables.h
b/include/llvm/CodeGen/LiveVariables.h
index f9b81b1ea7d60b1c637b57a97c8374c115c0754c..55b97dc3e71d94306be66c173fb50e4f56a36c3a 100644
(file)
--- a/
include/llvm/CodeGen/LiveVariables.h
+++ b/
include/llvm/CodeGen/LiveVariables.h
@@
-29,21
+29,19
@@
#ifndef LLVM_CODEGEN_LIVEVARIABLES_H
#define LLVM_CODEGEN_LIVEVARIABLES_H
#ifndef LLVM_CODEGEN_LIVEVARIABLES_H
#define LLVM_CODEGEN_LIVEVARIABLES_H
-#include "llvm/CodeGen/MachineBasicBlock.h"
-#include "llvm/CodeGen/MachineFunctionPass.h"
-#include "llvm/CodeGen/MachineInstr.h"
-#include "llvm/Target/TargetRegisterInfo.h"
-#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/IndexedMap.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/SparseBitVector.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/IndexedMap.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/SparseBitVector.h"
+#include "llvm/CodeGen/MachineFunctionPass.h"
+#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/Target/TargetRegisterInfo.h"
namespace llvm {
namespace llvm {
+class MachineBasicBlock;
class MachineRegisterInfo;
class MachineRegisterInfo;
-class TargetRegisterInfo;
class LiveVariables : public MachineFunctionPass {
public:
class LiveVariables : public MachineFunctionPass {
public:
@@
-85,17
+83,11
@@
public:
///
SparseBitVector<> AliveBlocks;
///
SparseBitVector<> AliveBlocks;
- /// NumUses - Number of uses of this register across the entire function.
- ///
- unsigned NumUses;
-
/// Kills - List of MachineInstruction's which are the last use of this
/// virtual register (kill it) in their basic block.
///
std::vector<MachineInstr*> Kills;
/// Kills - List of MachineInstruction's which are the last use of this
/// virtual register (kill it) in their basic block.
///
std::vector<MachineInstr*> Kills;
- VarInfo() : NumUses(0) {}
-
/// removeKill - Delete a kill corresponding to the specified
/// machine instruction. Returns true if there was a kill
/// corresponding to this instruction, false otherwise.
/// removeKill - Delete a kill corresponding to the specified
/// machine instruction. Returns true if there was a kill
/// corresponding to this instruction, false otherwise.
@@
-132,12
+124,6
@@
private:
/// building live intervals.
SparseBitVector<> PHIJoins;
/// building live intervals.
SparseBitVector<> PHIJoins;
- /// ReservedRegisters - This vector keeps track of which registers
- /// are reserved register which are not allocatable by the target machine.
- /// We can not track liveness for values that are in this set.
- ///
- BitVector ReservedRegisters;
-
private: // Intermediate data structures
MachineFunction *MF;
private: // Intermediate data structures
MachineFunction *MF;
@@
-148,14
+134,14
@@
private: // Intermediate data structures
// PhysRegInfo - Keep track of which instruction was the last def of a
// physical register. This is a purely local property, because all physical
// register references are presumed dead across basic blocks.
// PhysRegInfo - Keep track of which instruction was the last def of a
// physical register. This is a purely local property, because all physical
// register references are presumed dead across basic blocks.
-
MachineInstr **
PhysRegDef;
+
std::vector<MachineInstr *>
PhysRegDef;
// PhysRegInfo - Keep track of which instruction was the last use of a
// physical register. This is a purely local property, because all physical
// register references are presumed dead across basic blocks.
// PhysRegInfo - Keep track of which instruction was the last use of a
// physical register. This is a purely local property, because all physical
// register references are presumed dead across basic blocks.
-
MachineInstr **
PhysRegUse;
+
std::vector<MachineInstr *>
PhysRegUse;
-
SmallVector<unsigned, 4> *
PHIVarInfo;
+
std::vector<SmallVector<unsigned, 4>>
PHIVarInfo;
// DistanceMap - Keep track the distance of a MI from the start of the
// current basic block.
// DistanceMap - Keep track the distance of a MI from the start of the
// current basic block.
@@
-166,10
+152,13
@@
private: // Intermediate data structures
/// the last use of the whole register.
bool HandlePhysRegKill(unsigned Reg, MachineInstr *MI);
/// the last use of the whole register.
bool HandlePhysRegKill(unsigned Reg, MachineInstr *MI);
+ /// HandleRegMask - Call HandlePhysRegKill for all registers clobbered by Mask.
+ void HandleRegMask(const MachineOperand&);
+
void HandlePhysRegUse(unsigned Reg, MachineInstr *MI);
void HandlePhysRegDef(unsigned Reg, MachineInstr *MI,
void HandlePhysRegUse(unsigned Reg, MachineInstr *MI);
void HandlePhysRegDef(unsigned Reg, MachineInstr *MI,
- SmallVector
<unsigned, 4
> &Defs);
- void UpdatePhysRegDefs(MachineInstr *MI, SmallVector
<unsigned, 4
> &Defs);
+ SmallVector
Impl<unsigned
> &Defs);
+ void UpdatePhysRegDefs(MachineInstr *MI, SmallVector
Impl<unsigned
> &Defs);
/// FindLastRefOrPartRef - Return the last reference or partial reference of
/// the specified register.
/// FindLastRefOrPartRef - Return the last reference or partial reference of
/// the specified register.
@@
-186,9
+175,13
@@
private: // Intermediate data structures
/// register which is used in a PHI node. We map that to the BB the vreg
/// is coming from.
void analyzePHINodes(const MachineFunction& Fn);
/// register which is used in a PHI node. We map that to the BB the vreg
/// is coming from.
void analyzePHINodes(const MachineFunction& Fn);
+
+ void runOnInstr(MachineInstr *MI, SmallVectorImpl<unsigned> &Defs);
+
+ void runOnBlock(MachineBasicBlock *MBB, unsigned NumRegs);
public:
public:
-
virtual bool runOnMachineFunction(MachineFunction &MF)
;
+
bool runOnMachineFunction(MachineFunction &MF) override
;
/// RegisterDefIsDead - Return true if the specified instruction defines the
/// specified register, but that definition is dead.
/// RegisterDefIsDead - Return true if the specified instruction defines the
/// specified register, but that definition is dead.
@@
-231,6
+224,7
@@
public:
}
assert(Removed && "Register is not used by this instruction!");
}
assert(Removed && "Register is not used by this instruction!");
+ (void)Removed;
return true;
}
return true;
}
@@
-265,12
+259,13
@@
public:
}
}
assert(Removed && "Register is not defined by this instruction!");
}
}
assert(Removed && "Register is not defined by this instruction!");
+ (void)Removed;
return true;
}
return true;
}
-
- void getAnalysisUsage(AnalysisUsage &AU) const;
- virtual void releaseMemory() {
+ void getAnalysisUsage(AnalysisUsage &AU) const override;
+
+ void releaseMemory() override {
VirtRegInfo.clear();
}
VirtRegInfo.clear();
}