aaron.ballman added inline comments.
================
Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:297-298
+def err_anyx86_interrupt_regsave : Error<
+ "interrupt service routine may only call routine"
+ " with attribute no_caller_saved_registers">;
def warn_arm_interrupt_calling_convention : Warning<
----------------
The diagnostic wording needs a bit more updating though, see below.
================
Comment at: clang/lib/Sema/SemaExpr.cpp:6566
+ ((!FDecl || !FDecl->hasAttr<AnyX86NoCallerSavedRegistersAttr>()))) {
+ Diag(Fn->getExprLoc(), diag::err_anyx86_interrupt_regsave);
+ }
----------------
I think we should pass in `FDecl` when emitting the diagnostic because it's
possible that there are multiple function calls where only one is problematic.
e.g.,
```
__attribute__((interrupt)) void fooA(void) {
fine(okay(12), bad(14)); // Would be nice to identify 'bad' as the issue
}
```
However, I'm not certain what to say when `FDecl` is null (I don't know what
circumstances that happens).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D97764/new/
https://reviews.llvm.org/D97764
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits