Don't create VBROADCAST nodes if any nodes use the chain result from the load. Fixes...
authorCraig Topper <craig.topper@gmail.com>
Wed, 1 Feb 2012 06:51:58 +0000 (06:51 +0000)
committerCraig Topper <craig.topper@gmail.com>
Wed, 1 Feb 2012 06:51:58 +0000 (06:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149478 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp

index 90cd3d3b747bb8b603f573666e747f3fe0a1fa36..2ce883a17007e0ecdbf7e1e1271889c536d7641c 100644 (file)
@@ -4997,6 +4997,10 @@ static SDValue isVectorBroadcast(SDValue &Op, const X86Subtarget *Subtarget) {
   if (!ISD::isNormalLoad(Ld.getNode()))
     return SDValue();
 
+  // Reject loads that have uses of the chain result
+  if (Ld->hasAnyUseOfValue(1))
+    return SDValue();
+
   bool Is256 = VT.getSizeInBits() == 256;
   bool Is128 = VT.getSizeInBits() == 128;
   unsigned ScalarSize = Ld.getValueType().getSizeInBits();