[clang][patch] Modify diagnostic level from err to warn: anyx86_interrupt_regsave
Reviewed By: Aaron Ballman
Differential Revision: https://reviews.llvm.org/D100511
GitOrigin-RevId: 938b863bb53f033c916d4e8d9a18cbd063656011
diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td
index afef86a..c84fd4d 100644
--- a/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/include/clang/Basic/DiagnosticSemaKinds.td
@@ -293,9 +293,10 @@
"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<DiagGroup<"interrupt-service-routine">>;
def warn_arm_interrupt_calling_convention : Warning<
"call to function without interrupt attribute could clobber interruptee's VFP registers">,
InGroup<Extra>;
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index 2ea5775..38c25ca 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -6607,7 +6607,7 @@
}
if (Caller->hasAttr<AnyX86InterruptAttr>() &&
((!FDecl || !FDecl->hasAttr<AnyX86NoCallerSavedRegistersAttr>()))) {
- 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/test/Sema/attr-x86-interrupt.c b/test/Sema/attr-x86-interrupt.c
index 952433e..564704a 100644
--- a/test/Sema/attr-x86-interrupt.c
+++ b/test/Sema/attr-x86-interrupt.c
@@ -51,7 +51,7 @@
__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) {