projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[FunctionAttrs] Move the malloc-like test to a static helper function
[oota-llvm.git]
/
lib
/
CodeGen
/
ProcessImplicitDefs.cpp
diff --git
a/lib/CodeGen/ProcessImplicitDefs.cpp
b/lib/CodeGen/ProcessImplicitDefs.cpp
index e4e18c3bb54b51e4abb2ec4e0f4bbd6d65e9b66e..773173b963433f6089f346aa93b74d52b68b6eed 100644
(file)
--- a/
lib/CodeGen/ProcessImplicitDefs.cpp
+++ b/
lib/CodeGen/ProcessImplicitDefs.cpp
@@
-7,8
+7,6
@@
//
//===----------------------------------------------------------------------===//
//
//===----------------------------------------------------------------------===//
-#define DEBUG_TYPE "processimplicitdefs"
-
#include "llvm/ADT/SetVector.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
@@
-18,9
+16,12
@@
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetInstrInfo.h"
+#include "llvm/Target/TargetSubtargetInfo.h"
using namespace llvm;
using namespace llvm;
+#define DEBUG_TYPE "processimplicitdefs"
+
namespace {
/// Process IMPLICIT_DEF instructions and make sure there is one implicit_def
/// for each use. Add isUndef marker to implicit_def defs and their uses.
namespace {
/// Process IMPLICIT_DEF instructions and make sure there is one implicit_def
/// for each use. Add isUndef marker to implicit_def defs and their uses.
@@
-41,9
+42,9
@@
public:
initializeProcessImplicitDefsPass(*PassRegistry::getPassRegistry());
}
initializeProcessImplicitDefsPass(*PassRegistry::getPassRegistry());
}
- v
irtual void getAnalysisUsage(AnalysisUsage &au) const
;
+ v
oid getAnalysisUsage(AnalysisUsage &au) const override
;
-
virtual bool runOnMachineFunction(MachineFunction &fn)
;
+
bool runOnMachineFunction(MachineFunction &fn) override
;
};
} // end anonymous namespace
};
} // end anonymous namespace
@@
-57,7
+58,7
@@
INITIALIZE_PASS_END(ProcessImplicitDefs, "processimpdefs",
void ProcessImplicitDefs::getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesCFG();
void ProcessImplicitDefs::getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesCFG();
- AU.addPreserved<A
liasAnalysi
s>();
+ AU.addPreserved<A
AResultsWrapperPas
s>();
MachineFunctionPass::getAnalysisUsage(AU);
}
MachineFunctionPass::getAnalysisUsage(AU);
}
@@
-67,8
+68,8
@@
bool ProcessImplicitDefs::canTurnIntoImplicitDef(MachineInstr *MI) {
!MI->isRegSequence() &&
!MI->isPHI())
return false;
!MI->isRegSequence() &&
!MI->isPHI())
return false;
- for (
MIOperands MO(MI); MO.isValid(); ++MO
)
- if (MO
->isReg() && MO->isUse() && MO->
readsReg())
+ for (
const MachineOperand &MO : MI->operands()
)
+ if (MO
.isReg() && MO.isUse() && MO.
readsReg())
return false;
return true;
}
return false;
return true;
}
@@
-78,12
+79,9
@@
void ProcessImplicitDefs::processImplicitDef(MachineInstr *MI) {
unsigned Reg = MI->getOperand(0).getReg();
if (TargetRegisterInfo::isVirtualRegister(Reg)) {
unsigned Reg = MI->getOperand(0).getReg();
if (TargetRegisterInfo::isVirtualRegister(Reg)) {
- // For virtual regi
u
sters, mark all uses as <undef>, and convert users to
+ // For virtual registers, mark all uses as <undef>, and convert users to
// implicit-def when possible.
// implicit-def when possible.
- for (MachineRegisterInfo::use_nodbg_iterator UI =
- MRI->use_nodbg_begin(Reg),
- UE = MRI->use_nodbg_end(); UI != UE; ++UI) {
- MachineOperand &MO = UI.getOperand();
+ for (MachineOperand &MO : MRI->use_nodbg_operands(Reg)) {
MO.setIsUndef();
MachineInstr *UserMI = MO.getParent();
if (!canTurnIntoImplicitDef(UserMI))
MO.setIsUndef();
MachineInstr *UserMI = MO.getParent();
if (!canTurnIntoImplicitDef(UserMI))
@@
-102,17
+100,17
@@
void ProcessImplicitDefs::processImplicitDef(MachineInstr *MI) {
MachineBasicBlock::instr_iterator UserE = MI->getParent()->instr_end();
bool Found = false;
for (++UserMI; UserMI != UserE; ++UserMI) {
MachineBasicBlock::instr_iterator UserE = MI->getParent()->instr_end();
bool Found = false;
for (++UserMI; UserMI != UserE; ++UserMI) {
- for (M
IOperands MO(UserMI); MO.isValid(); ++MO
) {
- if (!MO
->
isReg())
+ for (M
achineOperand &MO : UserMI->operands()
) {
+ if (!MO
.
isReg())
continue;
continue;
- unsigned UserReg = MO
->
getReg();
+ unsigned UserReg = MO
.
getReg();
if (!TargetRegisterInfo::isPhysicalRegister(UserReg) ||
!TRI->regsOverlap(Reg, UserReg))
continue;
// UserMI uses or redefines Reg. Set <undef> flags on all uses.
Found = true;
if (!TargetRegisterInfo::isPhysicalRegister(UserReg) ||
!TRI->regsOverlap(Reg, UserReg))
continue;
// UserMI uses or redefines Reg. Set <undef> flags on all uses.
Found = true;
- if (MO
->
isUse())
- MO
->
setIsUndef();
+ if (MO
.
isUse())
+ MO
.
setIsUndef();
}
if (Found)
break;
}
if (Found)
break;
@@
-141,8
+139,8
@@
bool ProcessImplicitDefs::runOnMachineFunction(MachineFunction &MF) {
bool Changed = false;
bool Changed = false;
- TII = MF.get
T
arget().getInstrInfo();
- TRI = MF.get
T
arget().getRegisterInfo();
+ TII = MF.get
Subt
arget().getInstrInfo();
+ TRI = MF.get
Subt
arget().getRegisterInfo();
MRI = &MF.getRegInfo();
assert(MRI->isSSA() && "ProcessImplicitDefs only works on SSA form.");
assert(WorkList.empty() && "Inconsistent worklist state");
MRI = &MF.getRegInfo();
assert(MRI->isSSA() && "ProcessImplicitDefs only works on SSA form.");
assert(WorkList.empty() && "Inconsistent worklist state");