OSDN Git Service

Address Evan's comments for r151877.
authorChad Rosier <mcrosier@apple.com>
Mon, 5 Mar 2012 19:27:12 +0000 (19:27 +0000)
committerChad Rosier <mcrosier@apple.com>
Mon, 5 Mar 2012 19:27:12 +0000 (19:27 +0000)
Specifically, remove the magic number when checking to see if the copy has a
glue operand and simplify the checking logic.

rdar://10930395

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152041 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp

index d1ded33..cae9aad 100644 (file)
@@ -1585,13 +1585,12 @@ bool X86TargetLowering::isUsedByReturnOnly(SDNode *N) const {
     return false;
 
   SDNode *Copy = *N->use_begin();
-  if (Copy->getOpcode() != ISD::CopyToReg &&
-      Copy->getOpcode() != ISD::FP_EXTEND)
-    return false;
-
-  // If anything is glued to the copy, then we can't safely perform a tail call.
-  if (Copy->getOpcode() == ISD::CopyToReg &&
-      Copy->getNumOperands() == 4)
+  if (Copy->getOpcode() == ISD::CopyToReg) {
+    // If the copy has a glue operand, we conservatively assume it isn't safe to
+    // perform a tail call.
+    if (Copy->getOperand(Copy->getNumOperands()-1).getValueType() == MVT::Glue)
+      return false;
+  } else if (Copy->getOpcode() != ISD::FP_EXTEND)
     return false;
 
   bool HasRet = false;