================ @@ -794,6 +795,13 @@ void BackendConsumer::DontCallDiagHandler(const DiagnosticInfoDontCall &D) { ? diag::err_fe_backend_error_attr : diag::warn_fe_backend_warning_attr) << llvm::demangle(D.getFunctionName()) << D.getNote(); + + SmallVector<StringRef> InliningDecisions = D.getInliningDecisions(); + InliningDecisions.push_back(D.getCaller()); + for (const auto &[index, value] : llvm::enumerate(InliningDecisions)) + Diags.Report(LocCookie, index ? diag::note_fe_backend_inlined ---------------- nickdesaulniers wrote:
Ah right, the use of `LocCookie` is problematic here. Take this example ([from the RFC](https://discourse.llvm.org/t/rfc-improving-clangs-middle-and-back-end-diagnostics/69261)): ```c #include <string.h> __attribute__((error("bad memcpy"))) void bad(void); static void *my_memcpy(void *restrict dest, size_t dest_size, const void *restrict src, size_t src_size, size_t n) { if (n > dest_size || n > src_size) bad(); return memcpy(dest, src, n); } void my_driver (void) { unsigned char src [42], dst [42]; my_memcpy(dst, 42, src, 42, 0); my_memcpy(dst, 42, src, 42, 42); my_memcpy(dst, 42, src, 42, 4096); my_memcpy(dst, 42, src, 42, 1); } ``` No LocCookie: ```sh $ clang /tmp/x.c -O2 /tmp/x.c:8:9: error: call to 'bad' declared with 'error' attribute: bad memcpy 8 | bad(); | ^ note: called by function 'my_memcpy' note: inlined by function 'my_driver' 1 error generated. ``` w/ LocCookie: ```sh $ clang /tmp/x.c -O2 /tmp/x.c:8:9: error: call to 'bad' declared with 'error' attribute: bad memcpy 8 | bad(); | ^ /tmp/x.c:8:9: note: called by function 'my_memcpy' /tmp/x.c:8:9: note: inlined by function 'my_driver' 1 error generated. ``` The `LocCookie` is pointing to the function call to `bad();`, not the call to `my_memcpy` because that information was not retained. (We don't retain such debug info unless debug info (or optimization remarks) were requested; I discuss this in the RFC. I think it's preferable to have no line+col info on the note rather than wrong line+col info). https://github.com/llvm/llvm-project/pull/73552 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits