diff --git a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
index 1b3e428..ad91d4a 100644
--- a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
@@ -1152,15 +1152,14 @@
 
   bool IsVec = false;
   const ConstantSDNode *CN = dyn_cast<ConstantSDNode>(N);
-  if (!CN)
-    if (auto *BV = dyn_cast<BuildVectorSDNode>(N))
-      if (SDValue Splat = BV->getConstantSplatValue())
-        if (auto *SplatCN = dyn_cast<ConstantSDNode>(Splat)) {
-          IsVec = true;
-          CN = SplatCN;
-        }
-  if (!CN)
-    return false;
+  if (!CN) {
+    const BuildVectorSDNode *BV = dyn_cast<BuildVectorSDNode>(N);
+    if (!BV)
+      return false;
+
+    IsVec = true;
+    CN = BV->getConstantSplatValue();
+  }
 
   switch (getBooleanContents(IsVec)) {
   case UndefinedBooleanContent:
@@ -1180,15 +1179,14 @@
 
   bool IsVec = false;
   const ConstantSDNode *CN = dyn_cast<ConstantSDNode>(N);
-  if (!CN)
-    if (auto *BV = dyn_cast<BuildVectorSDNode>(N))
-      if (SDValue Splat = BV->getConstantSplatValue())
-        if (auto *SplatCN = dyn_cast<ConstantSDNode>(Splat)) {
-          IsVec = true;
-          CN = SplatCN;
-        }
-  if (!CN)
-    return false;
+  if (!CN) {
+    const BuildVectorSDNode *BV = dyn_cast<BuildVectorSDNode>(N);
+    if (!BV)
+      return false;
+
+    IsVec = true;
+    CN = BV->getConstantSplatValue();
+  }
 
   if (getBooleanContents(IsVec) == UndefinedBooleanContent)
     return !CN->getAPIntValue()[0];
