diff options
author | Joey Gouly <joey.gouly@gmail.com> | 2014-06-05 21:23:42 +0000 |
---|---|---|
committer | Joey Gouly <joey.gouly@gmail.com> | 2014-06-05 21:23:42 +0000 |
commit | 5798b26c65abd406ff6b70e65eb1d520f5f59215 (patch) | |
tree | e8d76aaa9f1189a69c983189a088d5422e9a5cec /clang/lib/CodeGen/CodeGenAction.cpp | |
parent | 980b25840f8904934a4fb86f6af0a249e3373862 (diff) | |
download | bcm5719-llvm-5798b26c65abd406ff6b70e65eb1d520f5f59215.tar.gz bcm5719-llvm-5798b26c65abd406ff6b70e65eb1d520f5f59215.zip |
When an inline-asm diagnostic is reported by the backend, report it with the
correct severity.
Previously all inline-asm diagnostics were reported as errors.
llvm-svn: 210286
Diffstat (limited to 'clang/lib/CodeGen/CodeGenAction.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenAction.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp index a197faece1f..f593ccf431d 100644 --- a/clang/lib/CodeGen/CodeGenAction.cpp +++ b/clang/lib/CodeGen/CodeGenAction.cpp @@ -297,13 +297,24 @@ void BackendConsumer::InlineAsmDiagHandler2(const llvm::SMDiagnostic &D, FullSourceLoc Loc; if (D.getLoc() != SMLoc()) Loc = ConvertBackendLocation(D, Context->getSourceManager()); - + unsigned DiagID; + switch (D.getKind()) { + case llvm::SourceMgr::DK_Error: + DiagID = diag::err_fe_inline_asm; + break; + case llvm::SourceMgr::DK_Warning: + DiagID = diag::warn_fe_inline_asm; + break; + case llvm::SourceMgr::DK_Note: + DiagID = diag::note_fe_inline_asm; + break; + } // If this problem has clang-level source location information, report the - // issue as being an error in the source with a note showing the instantiated + // issue in the source with a note showing the instantiated // code. if (LocCookie.isValid()) { - Diags.Report(LocCookie, diag::err_fe_inline_asm).AddString(Message); + Diags.Report(LocCookie, DiagID).AddString(Message); if (D.getLoc().isValid()) { DiagnosticBuilder B = Diags.Report(Loc, diag::note_fe_inline_asm_here); @@ -319,10 +330,10 @@ void BackendConsumer::InlineAsmDiagHandler2(const llvm::SMDiagnostic &D, return; } - // Otherwise, report the backend error as occurring in the generated .s file. - // If Loc is invalid, we still need to report the error, it just gets no + // Otherwise, report the backend issue as occurring in the generated .s file. + // If Loc is invalid, we still need to report the issue, it just gets no // location info. - Diags.Report(Loc, diag::err_fe_inline_asm).AddString(Message); + Diags.Report(Loc, DiagID).AddString(Message); } #define ComputeDiagID(Severity, GroupName, DiagID) \ |