position the caret properly on asm string diagnostics, e.g.:
Sema/asm.c:64:9: error: invalid % escape in inline assembly string asm("%!" : ); // expected-error {{invalid % escape in inline assembly string}} ~~^~ llvm-svn: 66606
This commit is contained in:
parent
a41b847401
commit
0cdaa2e525
|
@ -288,7 +288,7 @@ unsigned AsmStmt::AnalyzeAsmString(llvm::SmallVectorImpl<AsmStringPiece>&Pieces,
|
|||
continue;
|
||||
}
|
||||
|
||||
DiagOffs = CurPtr-StrStart;
|
||||
DiagOffs = CurPtr-StrStart-1;
|
||||
return diag::err_asm_invalid_escape;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -967,9 +967,8 @@ Sema::OwningStmtResult Sema::ActOnAsmStmt(SourceLocation AsmLoc,
|
|||
llvm::SmallVector<AsmStmt::AsmStringPiece, 8> Pieces;
|
||||
unsigned DiagOffs;
|
||||
if (unsigned DiagID = NS->AnalyzeAsmString(Pieces, Context, DiagOffs)) {
|
||||
// FIXME: get offsets in strings working.
|
||||
// StringLiteralParser::getOffsetOfStringByte
|
||||
Diag(AsmString->getLocStart(), DiagID) << AsmString->getSourceRange();
|
||||
Diag(getLocationOfStringLiteralByte(AsmString, DiagOffs), DiagID)
|
||||
<< AsmString->getSourceRange();
|
||||
DeleteStmt(NS);
|
||||
return StmtError();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue