Guard call to getRegForValue with isTypeLegal check to avoid unnecessary work/dead...
authorChad Rosier <mcrosier@apple.com>
Fri, 18 Nov 2011 01:17:34 +0000 (01:17 +0000)
committerChad Rosier <mcrosier@apple.com>
Fri, 18 Nov 2011 01:17:34 +0000 (01:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144959 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMFastISel.cpp

index 024cf278e76a73b7ec51877f5f078cf55a15fa44..9bae422273f0976a820bd82631e042f183f12ace 100644 (file)
@@ -2108,9 +2108,6 @@ bool ARMFastISel::SelectCall(const Instruction *I,
     if (IntrMemName && e-i <= 2)
       break;
 
-    unsigned Arg = getRegForValue(*i);
-    if (Arg == 0)
-      return false;
     ISD::ArgFlagsTy Flags;
     unsigned AttrInd = i - CS.arg_begin() + 1;
     if (CS.paramHasAttr(AttrInd, Attribute::SExt))
@@ -2130,6 +2127,11 @@ bool ARMFastISel::SelectCall(const Instruction *I,
     if (!isTypeLegal(ArgTy, ArgVT) && ArgVT != MVT::i16 && ArgVT != MVT::i8 &&
         ArgVT != MVT::i1)
       return false;
+
+    unsigned Arg = getRegForValue(*i);
+    if (Arg == 0)
+      return false;
+
     unsigned OriginalAlignment = TD.getABITypeAlignment(ArgTy);
     Flags.setOrigAlign(OriginalAlignment);