]> granicus.if.org Git - clang/commitdiff
Use "EvaluateAsRValue" instead of as a known int, because if it's not a known
authorBill Wendling <isanbard@gmail.com>
Wed, 19 Dec 2018 04:54:29 +0000 (04:54 +0000)
committerBill Wendling <isanbard@gmail.com>
Wed, 19 Dec 2018 04:54:29 +0000 (04:54 +0000)
integer we want to emit a diagnostic instead of asserting.

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

lib/Sema/SemaStmtAsm.cpp

index d209266049e60c060a06a2eb250ea734a4128b24..9e084c99d0dd410a0a30d6df28145bd099a53035 100644 (file)
@@ -379,16 +379,16 @@ StmtResult Sema::ActOnGCCAsmStmt(SourceLocation AsmLoc, bool IsSimple,
     } else if (Info.requiresImmediateConstant() && !Info.allowsRegister()) {
       if (!InputExpr->isValueDependent()) {
         Expr::EvalResult EVResult;
-        if (!InputExpr->EvaluateAsInt(EVResult, Context))
+        if (!InputExpr->EvaluateAsRValue(EVResult, Context, true))
           return StmtError(
               Diag(InputExpr->getBeginLoc(), diag::err_asm_immediate_expected)
               << Info.getConstraintStr() << InputExpr->getSourceRange());
         llvm::APSInt Result = EVResult.Val.getInt();
-         if (!Info.isValidAsmImmediate(Result))
-           return StmtError(Diag(InputExpr->getBeginLoc(),
-                                 diag::err_invalid_asm_value_for_constraint)
-                            << Result.toString(10) << Info.getConstraintStr()
-                            << InputExpr->getSourceRange());
+        if (!Info.isValidAsmImmediate(Result))
+          return StmtError(Diag(InputExpr->getBeginLoc(),
+                                diag::err_invalid_asm_value_for_constraint)
+                           << Result.toString(10) << Info.getConstraintStr()
+                           << InputExpr->getSourceRange());
       }
 
     } else {