Support for legalizing MEMBARRIER.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47667 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index 32b2101..d34d209 100644
--- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
@@ -1140,8 +1140,11 @@
     case TargetLowering::Legal: {
       SDOperand Ops[6];
       Ops[0] = LegalizeOp(Node->getOperand(0));  // Legalize the chain.
-      for (int x = 1; x < 6; ++x)
-        Ops[x] = PromoteOp(Node->getOperand(x));
+      for (int x = 1; x < 6; ++x) {
+        Ops[x] = Node->getOperand(x);
+        if (!isTypeLegal(Ops[x].getValueType()))
+          Ops[x] = PromoteOp(Ops[x]);
+      }
       Result = DAG.UpdateNodeOperands(Result, &Ops[0], 6);
       break;
     }