[llvm] 9d86bf8 - [X86] Move hasOneUse check after opcode check. NFC

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 15 17:23:42 PDT 2022


Author: Craig Topper
Date: 2022-04-15T17:20:57-07:00
New Revision: 9d86bf825c21279abfe318317d1a22b007331fa3

URL: https://github.com/llvm/llvm-project/commit/9d86bf825c21279abfe318317d1a22b007331fa3
DIFF: https://github.com/llvm/llvm-project/commit/9d86bf825c21279abfe318317d1a22b007331fa3.diff

LOG: [X86] Move hasOneUse check after opcode check. NFC

Checking opcode is cheap. hasOneUse might not be if the node has
multiple results. By checking the opcode we can rule out nodes
with multiple results we aren't interested in.

Added: 
    

Modified: 
    llvm/lib/Target/X86/X86ISelLowering.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 1a28c3c5ddcdf..f02e59dedfec2 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -52443,15 +52443,13 @@ static SDValue combineAddOrSubToADCOrSBB(bool IsSub, const SDLoc &DL, EVT VT,
   if (Y.getOpcode() == ISD::ZERO_EXTEND && Y.hasOneUse())
     Y = Y.getOperand(0);
 
-  if (!Y.hasOneUse())
-    return SDValue();
-
   X86::CondCode CC;
   SDValue EFLAGS;
-  if (Y.getOpcode() == X86ISD::SETCC) {
+  if (Y.getOpcode() == X86ISD::SETCC && Y.hasOneUse()) {
     CC = (X86::CondCode)Y.getConstantOperandVal(0);
     EFLAGS = Y.getOperand(1);
-  } else if (Y.getOpcode() == ISD::AND && isOneConstant(Y.getOperand(1))) {
+  } else if (Y.getOpcode() == ISD::AND && isOneConstant(Y.getOperand(1)) &&
+             Y.hasOneUse()) {
     EFLAGS = LowerAndToBT(Y, ISD::SETNE, DL, DAG, CC);
   }
 


        


More information about the llvm-commits mailing list