Scalarized vector stores need not be legal, e.g. if the vector element type
authorChris Lattner <sabre@nondot.org>
Fri, 31 Mar 2006 17:37:22 +0000 (17:37 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 31 Mar 2006 17:37:22 +0000 (17:37 +0000)
needs to be promoted or expanded.  Relegalize the scalar store once created.
This fixes CodeGen/Generic/vector.ll:test1 on non-SSE x86 targets.

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

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

index 93b0d9b1cceae5731a3eb075ee0efd152d6343ff..3fe984ebcc636ca8dc426b4308b994c5aefc9276 100644 (file)
@@ -1477,6 +1477,9 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
           Tmp3 = PackVectorOp(Node->getOperand(1), EVT);
           Result = DAG.UpdateNodeOperands(Result, Tmp1, Tmp3, Tmp2, 
                                           Node->getOperand(3));
+          // The scalarized value type may not be legal, e.g. it might require
+          // promotion or expansion.  Relegalize the scalar store.
+          Result = LegalizeOp(Result);
           break;
         } else {
           SplitVectorOp(Node->getOperand(1), Lo, Hi);