diff options
| author | 2018-04-06 14:26:03 +0000 | |
|---|---|---|
| committer | 2018-04-06 14:26:03 +0000 | |
| commit | bdabc2f19ffb9e20600dad6e8a300842a7bda50e (patch) | |
| tree | c50e7b2e5449b074651bb82a58517a8ebc4a8cf7 /gnu/llvm/lib/Target/ARM/A15SDOptimizer.cpp | |
| parent | Print a 'p' flag for file descriptors that were opened after pledge(2). (diff) | |
| download | wireguard-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.cpp | 49 |
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; |
