BBVectorize: isa/cast cleanup in getInstructionTypes
authorHal Finkel <hfinkel@anl.gov>
Mon, 11 Feb 2013 05:29:48 +0000 (05:29 +0000)
committerHal Finkel <hfinkel@anl.gov>
Mon, 11 Feb 2013 05:29:48 +0000 (05:29 +0000)
Profiling suggests that getInstructionTypes is performance-sensitive,
this cleans up some double-casting in that function in favor of
using dyn_cast.

No functionality change intended.

llvm-svn: 174857

llvm/lib/Transforms/Vectorize/BBVectorize.cpp

index 824494d..682e992 100644 (file)
@@ -466,18 +466,18 @@ namespace {
 
     static inline void getInstructionTypes(Instruction *I,
                                            Type *&T1, Type *&T2) {
-      if (isa<StoreInst>(I)) {
+      if (StoreInst *SI = dyn_cast<StoreInst>(I)) {
         // For stores, it is the value type, not the pointer type that matters
         // because the value is what will come from a vector register.
   
-        Value *IVal = cast<StoreInst>(I)->getValueOperand();
+        Value *IVal = SI->getValueOperand();
         T1 = IVal->getType();
       } else {
         T1 = I->getType();
       }
   
-      if (I->isCast())
-        T2 = cast<CastInst>(I)->getSrcTy();
+      if (CastInst *CI = dyn_cast<CastInst>(I))
+        T2 = CI->getSrcTy();
       else
         T2 = T1;