use 'match' to simplify some code.
authorChris Lattner <sabre@nondot.org>
Fri, 1 Jan 2010 22:12:03 +0000 (22:12 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 1 Jan 2010 22:12:03 +0000 (22:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92400 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InstructionCombining.cpp

index c6a8df44c8b977ac96a59c1b277671bbb44ead0c..ee0b9374cb14e70d76667793d845f61cb47906cb 100644 (file)
@@ -2949,12 +2949,11 @@ Instruction *InstCombiner::visitSub(BinaryOperator &I) {
   // Optimize pointer differences into the same array into a size.  Consider:
   //  &A[10] - &A[0]: we should compile this to "10".
   if (TD) {
-    if (PtrToIntInst *LHS = dyn_cast<PtrToIntInst>(Op0))
-      if (PtrToIntInst *RHS = dyn_cast<PtrToIntInst>(Op1))
-        if (Value *Res = OptimizePointerDifference(LHS->getOperand(0),
-                                                   RHS->getOperand(0),
-                                                   I.getType()))
-          return ReplaceInstUsesWith(I, Res);
+    Value *LHSOp, *RHSOp;
+    if (match(Op0, m_Cast<PtrToIntInst>(m_Value(LHSOp))) &&
+        match(Op1, m_Cast<PtrToIntInst>(m_Value(RHSOp))))
+      if (Value *Res = OptimizePointerDifference(LHSOp, RHSOp, I.getType()))
+        return ReplaceInstUsesWith(I, Res);
     
     // trunc(p)-trunc(q) -> trunc(p-q)
     if (TruncInst *LHST = dyn_cast<TruncInst>(Op0))