Move subtarget check upper for NEON reg-reg fixup pass.
authorAnton Korobeynikov <asl@math.spbu.ru>
Tue, 3 Nov 2009 18:46:11 +0000 (18:46 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Tue, 3 Nov 2009 18:46:11 +0000 (18:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85914 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMTargetMachine.cpp
lib/Target/ARM/NEONMoveFix.cpp

index 29579db2e73f1c3226e745bea88d93ec25b5f23e..b4ce1d7760cc4cb903cbe43b00112f17f20cb6cf 100644 (file)
@@ -115,7 +115,8 @@ bool ARMBaseTargetMachine::addPreEmitPass(PassManagerBase &PM,
   if (OptLevel != CodeGenOpt::None) {
     if (!Subtarget.isThumb1Only())
       PM.add(createIfConverterPass());
-    PM.add(createNEONMoveFixPass());
+    if (Subtarget.hasNEON())
+      PM.add(createNEONMoveFixPass());
   }
 
   if (Subtarget.isThumb2()) {
index 3c3b9520ca14ab07d7df4d87fc93918b011df7f9..f307e3b3108b3c5628087b9b86254d259a6f7993 100644 (file)
@@ -35,7 +35,6 @@ namespace {
   private:
     const TargetRegisterInfo *TRI;
     const ARMBaseInstrInfo *TII;
-    const ARMSubtarget *Subtarget;
 
     typedef DenseMap<unsigned, const MachineInstr*> RegMap;
 
@@ -71,7 +70,7 @@ bool NEONMoveFixPass::InsertMoves(MachineBasicBlock &MBB) {
           Domain = ARMII::DomainNEON;
       }
 
-      if ((Domain & ARMII::DomainNEON) && Subtarget->hasNEON()) {
+      if (Domain & ARMII::DomainNEON) {
         // Convert FCPYD to VMOVD.
         unsigned DestReg = MI->getOperand(0).getReg();
 
@@ -93,8 +92,7 @@ bool NEONMoveFixPass::InsertMoves(MachineBasicBlock &MBB) {
         Modified = true;
         ++NumVMovs;
       } else {
-        assert((Domain & ARMII::DomainVFP ||
-                !Subtarget->hasNEON()) && "Invalid domain!");
+        assert((Domain & ARMII::DomainVFP) && "Invalid domain!");
         // Do nothing.
       }
     }
@@ -124,7 +122,6 @@ bool NEONMoveFixPass::runOnMachineFunction(MachineFunction &Fn) {
     return false;
 
   TRI = TM.getRegisterInfo();
-  Subtarget = &TM.getSubtarget<ARMSubtarget>();
   TII = static_cast<const ARMBaseInstrInfo*>(TM.getInstrInfo());
 
   bool Modified = false;