1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00

* Converted C-style comments to C++

* Doxygenified comments
* Reordered #includes

llvm-svn: 10503
This commit is contained in:
Misha Brukman 2003-12-17 22:08:20 +00:00
parent 61860852dc
commit adac37e69b

View File

@ -13,12 +13,12 @@
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "SparcInternals.h" #include "SparcInternals.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/BasicBlock.h" #include "llvm/BasicBlock.h"
#include "llvm/Pass.h" #include "llvm/Pass.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetMachine.h"
namespace llvm { namespace llvm {
@ -62,7 +62,7 @@ DeleteInstruction(MachineBasicBlock& mvec,
static bool IsUselessCopy(const TargetMachine &target, const MachineInstr* MI) { static bool IsUselessCopy(const TargetMachine &target, const MachineInstr* MI) {
if (MI->getOpCode() == V9::FMOVS || MI->getOpCode() == V9::FMOVD) { if (MI->getOpCode() == V9::FMOVS || MI->getOpCode() == V9::FMOVD) {
return (/* both operands are allocated to the same register */ return (// both operands are allocated to the same register
MI->getOperand(0).getAllocatedRegNum() == MI->getOperand(0).getAllocatedRegNum() ==
MI->getOperand(1).getAllocatedRegNum()); MI->getOperand(1).getAllocatedRegNum());
} else if (MI->getOpCode() == V9::ADDr || MI->getOpCode() == V9::ORr || } else if (MI->getOpCode() == V9::ADDr || MI->getOpCode() == V9::ORr ||
@ -78,14 +78,14 @@ static bool IsUselessCopy(const TargetMachine &target, const MachineInstr* MI) {
if (srcWithDestReg == 2) if (srcWithDestReg == 2)
return false; return false;
else { else {
/* else source and dest are allocated to the same register */ // else source and dest are allocated to the same register
unsigned otherOp = 1 - srcWithDestReg; unsigned otherOp = 1 - srcWithDestReg;
return (/* either operand otherOp is register %g0 */ return (// either operand otherOp is register %g0
(MI->getOperand(otherOp).hasAllocatedReg() && (MI->getOperand(otherOp).hasAllocatedReg() &&
MI->getOperand(otherOp).getAllocatedRegNum() == MI->getOperand(otherOp).getAllocatedRegNum() ==
target.getRegInfo().getZeroRegNum()) || target.getRegInfo().getZeroRegNum()) ||
/* or operand otherOp == 0 */ // or operand otherOp == 0
(MI->getOperand(otherOp).getType() (MI->getOperand(otherOp).getType()
== MachineOperand::MO_SignExtendedImmed && == MachineOperand::MO_SignExtendedImmed &&
MI->getOperand(otherOp).getImmedValue() == 0)); MI->getOperand(otherOp).getImmedValue() == 0));
@ -117,6 +117,11 @@ public:
PeepholeOpts(const TargetMachine &TM): target(TM) { } PeepholeOpts(const TargetMachine &TM): target(TM) { }
bool runOnBasicBlock(BasicBlock &BB); // apply this pass to each BB bool runOnBasicBlock(BasicBlock &BB); // apply this pass to each BB
virtual const char *getPassName() const { return "Peephole Optimization"; } virtual const char *getPassName() const { return "Peephole Optimization"; }
// getAnalysisUsage - this pass preserves the CFG
void getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesCFG();
}
}; };
// Apply a list of peephole optimizations to this machine instruction // Apply a list of peephole optimizations to this machine instruction
@ -125,7 +130,7 @@ public:
// //
bool PeepholeOpts::visit(MachineBasicBlock& mvec, bool PeepholeOpts::visit(MachineBasicBlock& mvec,
MachineBasicBlock::iterator BBI) const { MachineBasicBlock::iterator BBI) const {
/* Remove redundant copy instructions */ // Remove redundant copy instructions
return RemoveUselessCopies(mvec, BBI, target); return RemoveUselessCopies(mvec, BBI, target);
} }
@ -157,11 +162,8 @@ bool PeepholeOpts::runOnBasicBlock(BasicBlock &BB) {
return true; return true;
} }
/// createPeepholeOptsPass - Public entry point for peephole optimization
//===----------------------------------------------------------------------===// ///
// createPeepholeOptsPass - Public entrypoint for peephole optimization
// and this file as a whole...
//
FunctionPass* createPeepholeOptsPass(const TargetMachine &TM) { FunctionPass* createPeepholeOptsPass(const TargetMachine &TM) {
return new PeepholeOpts(TM); return new PeepholeOpts(TM);
} }