From 938b863bb53f033c916d4e8d9a18cbd063656011 Mon Sep 17 00:00:00 2001 From: Melanie Blower Date: Wed, 14 Apr 2021 17:07:54 -0400 Subject: [PATCH] [clang][patch] Modify diagnostic level from err to warn: anyx86_interrupt_regsave Reviewed By: Aaron Ballman Differential Revision: https://reviews.llvm.org/D100511 --- clang/include/clang/Basic/DiagnosticSemaKinds.td | 7 ++++--- clang/lib/Sema/SemaExpr.cpp | 2 +- clang/test/Sema/attr-x86-interrupt.c | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index afef86a..c84fd4d 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -293,9 +293,10 @@ def err_anyx86_interrupt_attribute : Error< "a pointer as the first parameter|a %2 type as the second parameter}1">; def err_anyx86_interrupt_called : Error< "interrupt service routine cannot be called directly">; -def err_anyx86_interrupt_regsave : Error< - "interrupt service routine may only call a function" - " with attribute 'no_caller_saved_registers'">; +def warn_anyx86_interrupt_regsave : Warning< + "interrupt service routine should only call a function" + " with attribute 'no_caller_saved_registers'">, + InGroup>; def warn_arm_interrupt_calling_convention : Warning< "call to function without interrupt attribute could clobber interruptee's VFP registers">, InGroup; diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 2ea5775..38c25ca 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -6607,7 +6607,7 @@ ExprResult Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, } if (Caller->hasAttr() && ((!FDecl || !FDecl->hasAttr()))) { - Diag(Fn->getExprLoc(), diag::err_anyx86_interrupt_regsave); + Diag(Fn->getExprLoc(), diag::warn_anyx86_interrupt_regsave); if (FDecl) Diag(FDecl->getLocation(), diag::note_callee_decl) << FDecl; } diff --git a/clang/test/Sema/attr-x86-interrupt.c b/clang/test/Sema/attr-x86-interrupt.c index 952433e..564704a 100644 --- a/clang/test/Sema/attr-x86-interrupt.c +++ b/clang/test/Sema/attr-x86-interrupt.c @@ -51,7 +51,7 @@ typedef unsigned int Arg2Type; __attribute__((no_caller_saved_registers)) #else // expected-note@+3 {{'foo9' declared here}} -// expected-error@+4 {{interrupt service routine may only call a function with attribute 'no_caller_saved_registers'}} +// expected-warning@+4 {{interrupt service routine should only call a function with attribute 'no_caller_saved_registers'}} #endif void foo9(int *a, Arg2Type b) {} __attribute__((interrupt)) void fooA(int *a, Arg2Type b) { -- 2.7.4