diff options
author | Eric Christopher <echristo@gmail.com> | 2015-03-05 00:23:40 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gmail.com> | 2015-03-05 00:23:40 +0000 |
commit | 63b44882ef8704f531c97a56e6895a400c85474c (patch) | |
tree | 3db2fbc7992a981beecbecbb4abb6b405969ee2d /llvm/lib/Target/ARM/A15SDOptimizer.cpp | |
parent | 49e38965dc3424859429ee1ae043dab44cd849f5 (diff) | |
download | llvm-63b44882ef8704f531c97a56e6895a400c85474c.zip llvm-63b44882ef8704f531c97a56e6895a400c85474c.tar.gz llvm-63b44882ef8704f531c97a56e6895a400c85474c.tar.bz2 |
Cleanup and remove a chunk of getARMSubtarget calls in the
ARM TargetMachine pass pipeline construction by pushing them down
into the appropriate pass.
llvm-svn: 231323
Diffstat (limited to 'llvm/lib/Target/ARM/A15SDOptimizer.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/A15SDOptimizer.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/A15SDOptimizer.cpp b/llvm/lib/Target/ARM/A15SDOptimizer.cpp index 387f1f6..6afd573 100644 --- a/llvm/lib/Target/ARM/A15SDOptimizer.cpp +++ b/llvm/lib/Target/ARM/A15SDOptimizer.cpp @@ -27,7 +27,9 @@ #include "ARM.h" #include "ARMBaseInstrInfo.h" #include "ARMBaseRegisterInfo.h" +#include "ARMSubtarget.h" #include "llvm/ADT/Statistic.h" +#include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineInstr.h" #include "llvm/CodeGen/MachineInstrBuilder.h" @@ -678,8 +680,13 @@ bool A15SDOptimizer::runOnInstruction(MachineInstr *MI) { } bool A15SDOptimizer::runOnMachineFunction(MachineFunction &Fn) { - TII = static_cast<const ARMBaseInstrInfo *>(Fn.getSubtarget().getInstrInfo()); - TRI = Fn.getSubtarget().getRegisterInfo(); + const ARMSubtarget &STI = Fn.getSubtarget<ARMSubtarget>(); + // Since the A15SDOptimizer pass can insert VDUP instructions, it can only be + // enabled when NEON is available. + if (!(STI.isCortexA15() && STI.hasNEON())) + return false; + TII = STI.getInstrInfo(); + TRI = STI.getRegisterInfo(); MRI = &Fn.getRegInfo(); bool Modified = false; |