From: Chris Lattner Date: Sun, 3 May 2009 06:50:40 +0000 (+0000) Subject: avoid a crash when we encounter a implicit cast of the paren expr due to X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c1f3b28004a032f4cd13721d4d884c6dcec29c31;p=clang avoid a crash when we encounter a implicit cast of the paren expr due to promotions. This should be fixed by not modeling asm operands (which require the ()'s according to the grammar) as not being paren exprs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70668 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp index ac5cef10f4..02f6840415 100644 --- a/lib/Sema/SemaStmt.cpp +++ b/lib/Sema/SemaStmt.cpp @@ -1040,7 +1040,7 @@ Sema::OwningStmtResult Sema::ActOnAsmStmt(SourceLocation AsmLoc, unsigned TiedTo = Info.getTiedOperand(); Expr *OutputExpr = Exprs[TiedTo]; - ParenExpr *InputExpr = cast(Exprs[i+NumOutputs]); + Expr *InputExpr = Exprs[i+NumOutputs]; QualType InTy = InputExpr->getType(); QualType OutTy = OutputExpr->getType(); if (Context.hasSameType(InTy, OutTy)) @@ -1057,7 +1057,7 @@ Sema::OwningStmtResult Sema::ActOnAsmStmt(SourceLocation AsmLoc, continue; } - Diag(InputExpr->getSubExpr()->getLocStart(), + Diag(InputExpr->getLocStart(), diag::err_asm_tying_incompatible_types) << InTy << OutTy << OutputExpr->getSourceRange() << InputExpr->getSourceRange();