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:
Chris Lattner 2009-03-10 23:57:07 +00:00
parent a41b847401
commit 0cdaa2e525
2 changed files with 3 additions and 4 deletions

View File

@ -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;
}
}

View File

@ -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();
}