summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lib/Target/ARM/A15SDOptimizer.cpp
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2018-04-06 14:26:03 +0000
committerpatrick <patrick@openbsd.org>2018-04-06 14:26:03 +0000
commitbdabc2f19ffb9e20600dad6e8a300842a7bda50e (patch)
treec50e7b2e5449b074651bb82a58517a8ebc4a8cf7 /gnu/llvm/lib/Target/ARM/A15SDOptimizer.cpp
parentPrint a 'p' flag for file descriptors that were opened after pledge(2). (diff)
downloadwireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.tar.xz
wireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.zip
Import LLVM 6.0.1 release including clang, lld and lldb.
"where is the kaboom?" deraadt@
Diffstat (limited to 'gnu/llvm/lib/Target/ARM/A15SDOptimizer.cpp')
-rw-r--r--gnu/llvm/lib/Target/ARM/A15SDOptimizer.cpp49
1 files changed, 17 insertions, 32 deletions
diff --git a/gnu/llvm/lib/Target/ARM/A15SDOptimizer.cpp b/gnu/llvm/lib/Target/ARM/A15SDOptimizer.cpp
index 8640c873f44..16d5f74d19e 100644
--- a/gnu/llvm/lib/Target/ARM/A15SDOptimizer.cpp
+++ b/gnu/llvm/lib/Target/ARM/A15SDOptimizer.cpp
@@ -34,10 +34,10 @@
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
+#include "llvm/CodeGen/TargetRegisterInfo.h"
+#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
-#include "llvm/Target/TargetRegisterInfo.h"
-#include "llvm/Target/TargetSubtargetInfo.h"
#include <map>
#include <set>
@@ -189,8 +189,7 @@ void A15SDOptimizer::eraseInstrWithNoUses(MachineInstr *MI) {
// MI is already known to be dead. We need to see
// if other instructions can also be removed.
- for (unsigned int i = 0; i < MI->getNumOperands(); ++i) {
- MachineOperand &MO = MI->getOperand(i);
+ for (MachineOperand &MO : MI->operands()) {
if ((!MO.isReg()) || (!MO.isUse()))
continue;
unsigned Reg = MO.getReg();
@@ -212,8 +211,7 @@ void A15SDOptimizer::eraseInstrWithNoUses(MachineInstr *MI) {
// dead. If so, we can also mark this instruction as being
// dead.
bool IsDead = true;
- for (unsigned int j = 0; j < Def->getNumOperands(); ++j) {
- MachineOperand &MODef = Def->getOperand(j);
+ for (MachineOperand &MODef : Def->operands()) {
if ((!MODef.isReg()) || (!MODef.isDef()))
continue;
unsigned DefReg = MODef.getReg();
@@ -221,13 +219,11 @@ void A15SDOptimizer::eraseInstrWithNoUses(MachineInstr *MI) {
IsDead = false;
break;
}
- for (MachineRegisterInfo::use_instr_iterator
- II = MRI->use_instr_begin(Reg), EE = MRI->use_instr_end();
- II != EE; ++II) {
+ for (MachineInstr &Use : MRI->use_instructions(Reg)) {
// We don't care about self references.
- if (&*II == Def)
+ if (&Use == Def)
continue;
- if (DeadInstr.find(&*II) == DeadInstr.end()) {
+ if (DeadInstr.find(&Use) == DeadInstr.end()) {
IsDead = false;
break;
}
@@ -277,7 +273,7 @@ unsigned A15SDOptimizer::optimizeSDPattern(MachineInstr *MI) {
MRI->getRegClass(MI->getOperand(1).getReg());
if (TRC->hasSuperClassEq(MRI->getRegClass(FullReg))) {
DEBUG(dbgs() << "Subreg copy is compatible - returning ");
- DEBUG(dbgs() << PrintReg(FullReg) << "\n");
+ DEBUG(dbgs() << printReg(FullReg) << "\n");
eraseInstrWithNoUses(MI);
return FullReg;
}
@@ -405,9 +401,7 @@ SmallVector<unsigned, 8> A15SDOptimizer::getReadDPRs(MachineInstr *MI) {
return SmallVector<unsigned, 8>();
SmallVector<unsigned, 8> Defs;
- for (unsigned i = 0; i < MI->getNumOperands(); ++i) {
- MachineOperand &MO = MI->getOperand(i);
-
+ for (MachineOperand &MO : MI->operands()) {
if (!MO.isReg() || !MO.isUse())
continue;
if (!usesRegClass(MO, &ARM::DPRRegClass) &&
@@ -617,10 +611,7 @@ bool A15SDOptimizer::runOnInstruction(MachineInstr *MI) {
elideCopiesAndPHIs(Def, DefSrcs);
- for (SmallVectorImpl<MachineInstr *>::iterator II = DefSrcs.begin(),
- EE = DefSrcs.end(); II != EE; ++II) {
- MachineInstr *MI = *II;
-
+ for (MachineInstr *MI : DefSrcs) {
// If we've already analyzed and replaced this operand, don't do
// anything.
if (Replacements.find(MI) != Replacements.end())
@@ -653,7 +644,7 @@ bool A15SDOptimizer::runOnInstruction(MachineInstr *MI) {
DEBUG(dbgs() << "Replacing operand "
<< **I << " with "
- << PrintReg(NewReg) << "\n");
+ << printReg(NewReg) << "\n");
(*I)->substVirtReg(NewReg, 0, *TRI);
}
}
@@ -664,7 +655,7 @@ bool A15SDOptimizer::runOnInstruction(MachineInstr *MI) {
}
bool A15SDOptimizer::runOnMachineFunction(MachineFunction &Fn) {
- if (skipFunction(*Fn.getFunction()))
+ if (skipFunction(Fn.getFunction()))
return false;
const ARMSubtarget &STI = Fn.getSubtarget<ARMSubtarget>();
@@ -682,20 +673,14 @@ bool A15SDOptimizer::runOnMachineFunction(MachineFunction &Fn) {
DeadInstr.clear();
Replacements.clear();
- for (MachineFunction::iterator MFI = Fn.begin(), E = Fn.end(); MFI != E;
- ++MFI) {
-
- for (MachineBasicBlock::iterator MI = MFI->begin(), ME = MFI->end();
- MI != ME;) {
- Modified |= runOnInstruction(&*MI++);
+ for (MachineBasicBlock &MBB : Fn) {
+ for (MachineInstr &MI : MBB) {
+ Modified |= runOnInstruction(&MI);
}
-
}
- for (std::set<MachineInstr *>::iterator I = DeadInstr.begin(),
- E = DeadInstr.end();
- I != E; ++I) {
- (*I)->eraseFromParent();
+ for (MachineInstr *MI : DeadInstr) {
+ MI->eraseFromParent();
}
return Modified;