pull operands names "[foo]" into ConstraintInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70136 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp
index 4d36207..0837dd0 100644
--- a/lib/CodeGen/CGStmt.cpp
+++ b/lib/CodeGen/CGStmt.cpp
@@ -688,10 +688,9 @@
   CaseRangeBlock = SavedCRBlock;
 }
 
-static std::string SimplifyConstraint(const char* Constraint,
-                                      TargetInfo &Target,
-                                      const std::string *OutputNamesBegin = 0,
-                                      const std::string *OutputNamesEnd = 0) {
+static std::string
+SimplifyConstraint(const char *Constraint, TargetInfo &Target,
+                 llvm::SmallVectorImpl<TargetInfo::ConstraintInfo> *OutCons=0) {
   std::string Result;
   
   while (*Constraint) {
@@ -708,12 +707,12 @@
       Result += "imr";
       break;
     case '[': {
-      assert(OutputNamesBegin && OutputNamesEnd &&
+      assert(OutCons &&
              "Must pass output names to constraints with a symbolic name");
       unsigned Index;
       bool result = Target.resolveSymbolicName(Constraint, 
-                                               OutputNamesBegin,
-                                               OutputNamesEnd, Index);
+                                               &(*OutCons)[0],
+                                               OutCons->size(), Index);
       assert(result && "Could not resolve symbolic name"); result=result;
       Result += llvm::utostr(Index);
       break;
@@ -798,7 +797,7 @@
   for (unsigned i = 0, e = S.getNumOutputs(); i != e; i++) {    
     std::string OutputConstraint(S.getOutputConstraint(i));
     
-    TargetInfo::ConstraintInfo Info(OutputConstraint);
+    TargetInfo::ConstraintInfo Info(OutputConstraint, S.getOutputName(i));
     bool result = Target.validateOutputConstraint(Info);
     assert(result && "Failed to parse output constraint"); result=result;
     
@@ -852,10 +851,9 @@
 
     std::string InputConstraint(S.getInputConstraint(i));
     
-    TargetInfo::ConstraintInfo Info(InputConstraint);
-    bool result = Target.validateInputConstraint(S.begin_output_names(),
-                                                 S.end_output_names(),
-                                                 &OutputConstraintInfos[0],
+    TargetInfo::ConstraintInfo Info(InputConstraint, S.getInputName(i));
+    bool result = Target.validateInputConstraint(&OutputConstraintInfos[0],
+                                                 S.getNumOutputs(),
                                                  Info); result=result;
     assert(result && "Failed to parse input constraint");
     
@@ -864,8 +862,7 @@
     
     // Simplify the input constraint.
     InputConstraint = SimplifyConstraint(InputConstraint.c_str(), Target,
-                                         S.begin_output_names(),
-                                         S.end_output_names());
+                                         &OutputConstraintInfos);
 
     llvm::Value *Arg = EmitAsmInput(S, Info, InputExpr, Constraints);