]> granicus.if.org Git - clang/commitdiff
[ms-inline asm] Generate the Input/Output expressions using
authorChad Rosier <mcrosier@apple.com>
Fri, 24 Aug 2012 16:38:58 +0000 (16:38 +0000)
committerChad Rosier <mcrosier@apple.com>
Fri, 24 Aug 2012 16:38:58 +0000 (16:38 +0000)
Sema::ActOnIdExpression().

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

lib/Sema/SemaStmtAsm.cpp

index fc9497e1e28029f1a6b95c8b4d0282da05f09916..94699606f4d4c84d210fc495d3be239c0ea15cb9 100644 (file)
@@ -598,13 +598,20 @@ StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc,
                                                  AsmTokRanges[StrIdx].first,
                                                  AsmTokRanges[StrIdx].second);
           if (II) {
-            // FIXME: Compute the InputExpr/OutputExpr using ActOnIdExpression().
-            if (isDef) {
-              Outputs.push_back(II);
-              OutputExprs.push_back(0);
-            } else {
-              Inputs.push_back(II);
-              InputExprs.push_back(0);
+            CXXScopeSpec SS;
+            UnqualifiedId Id;
+            SourceLocation Loc;
+            Id.setIdentifier(II, AsmLoc);
+            ExprResult Result = ActOnIdExpression(getCurScope(), SS, Loc, Id,
+                                                  false, false);
+            if (!Result.isInvalid()) {
+              if (isDef) {
+                Outputs.push_back(II);
+                OutputExprs.push_back(Result.take());
+              } else {
+                Inputs.push_back(II);
+                InputExprs.push_back(Result.take());
+              }
             }
           }
         }