Only perform DAG combine on FMAs of legal types.
authorCraig Topper <craig.topper@gmail.com>
Thu, 30 Aug 2012 06:56:15 +0000 (06:56 +0000)
committerCraig Topper <craig.topper@gmail.com>
Thu, 30 Aug 2012 06:56:15 +0000 (06:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162892 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp

index 8b7a4d0a08d92324f6717990b9452763b22c3b3e..b2b30fe387c3675cccc2a0fffddc4aa56d6f1bec 100644 (file)
@@ -15601,6 +15601,10 @@ static SDValue PerformFMACombine(SDNode *N, SelectionDAG &DAG,
   DebugLoc dl = N->getDebugLoc();
   EVT VT = N->getValueType(0);
 
+  // Let legalize expand this if it isn't a legal type yet.
+  if (!DAG.getTargetLoweringInfo().isTypeLegal(VT))
+    return SDValue();
+
   EVT ScalarVT = VT.getScalarType();
   if ((ScalarVT != MVT::f32 && ScalarVT != MVT::f64) || !Subtarget->hasFMA())
     return SDValue();