[cfe-commits] r142131 - /cfe/trunk/lib/CodeGen/CodeGenAction.cpp

Chris Lattner clattner at apple.com
Sun Oct 16 22:28:14 PDT 2011


On Oct 16, 2011, at 3:48 AM, Benjamin Kramer wrote:

> Author: d0k
> Date: Sun Oct 16 05:48:28 2011
> New Revision: 142131
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=142131&view=rev
> Log:
> Convert inline asm source ranges into clang SourceRanges and print them with the instantiated note.
> 
> t.c:2:7: error: invalid operand for instruction
>  asm("movl 0(%rax), 0(%edx)");
>      ^
> <inline asm>:1:16: note: instantiated into assembly here
>        movl 0(%rax), 0(%edx)
>                      ^~~~~~~
> 1 error generated.

Very nice!!

-Chris

> 
> Modified:
>    cfe/trunk/lib/CodeGen/CodeGenAction.cpp
> 
> Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=142131&r1=142130&r2=142131&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Sun Oct 16 05:48:28 2011
> @@ -215,8 +215,17 @@
>   if (LocCookie.isValid()) {
>     Diags.Report(LocCookie, diag::err_fe_inline_asm).AddString(Message);
> 
> -    if (D.getLoc().isValid())
> -      Diags.Report(Loc, diag::note_fe_inline_asm_here);
> +    if (D.getLoc().isValid()) {
> +      DiagnosticBuilder B = Diags.Report(Loc, diag::note_fe_inline_asm_here);
> +      // Convert the SMDiagnostic ranges into SourceRange and attach them
> +      // to the diagnostic.
> +      for (unsigned i = 0, e = D.getRanges().size(); i != e; ++i) {
> +        std::pair<unsigned, unsigned> Range = D.getRanges()[i];
> +        unsigned Column = D.getColumnNo();
> +        B << SourceRange(Loc.getLocWithOffset(Range.first - Column),
> +                         Loc.getLocWithOffset(Range.second - Column));
> +      }
> +    }
>     return;
>   }
> 
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits




More information about the cfe-commits mailing list