]> granicus.if.org Git - clang/commitdiff
more code restructuring, no functionality change.
authorChris Lattner <sabre@nondot.org>
Mon, 21 Feb 2011 21:50:25 +0000 (21:50 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 21 Feb 2011 21:50:25 +0000 (21:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126146 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaStmt.cpp

index 2e50cc3bbd1b5d57269d07e61f37dd8315c10baf..6801dd4c2ebe5b8ef3bd8ccd0c5f4527e5a8981b 100644 (file)
@@ -1582,28 +1582,22 @@ StmtResult Sema::ActOnAsmStmt(SourceLocation AsmLoc, bool IsSimple,
       continue;
 
     // If the smaller input/output operand is not mentioned in the asm string,
-    // then we can promote it to a larger input and the asm string won't notice.
-    // Check this case now.
-    bool InputMentioned = isOperandMentioned(i+NumOutputs, Pieces);
-    bool OutputMentioned = isOperandMentioned(TiedTo, Pieces);
-    
+    // then we can promote the smaller one to a larger input and the asm string
+    // won't notice.
     bool SmallerValueMentioned = false;
     
     // If this is a reference to the input and if the input was the smaller
     // one, then we have to reject this asm.
-    if (InputMentioned) {
+    if (isOperandMentioned(i+NumOutputs, Pieces)) {
       // This is a use in the asm string of the smaller operand.  Since we
       // codegen this by promoting to a wider value, the asm will get printed
       // "wrong".
-      if (InSize < OutSize)
-        SmallerValueMentioned = true;
+      SmallerValueMentioned |= InSize < OutSize;
     }
-
-    if (OutputMentioned) {
+    if (isOperandMentioned(TiedTo, Pieces)) {
       // If this is a reference to the output, and if the output is the larger
       // value, then it's ok because we'll promote the input to the larger type.
-      if (OutSize < InSize)
-        SmallerValueMentioned = true;
+      SmallerValueMentioned |= OutSize < InSize;
     }
 
     // If the smaller value wasn't mentioned in the asm string, and if the
@@ -1612,7 +1606,7 @@ StmtResult Sema::ActOnAsmStmt(SourceLocation AsmLoc, bool IsSimple,
     if (!SmallerValueMentioned && InputDomain != AD_Other &&
         OutputConstraintInfos[TiedTo].allowsRegister())
       continue;
-
+    
     Diag(InputExpr->getLocStart(),
          diag::err_asm_tying_incompatible_types)
       << InTy << OutTy << OutputExpr->getSourceRange()