[all-commits] [llvm/llvm-project] cfc20e: [Clang] FunctionEffects: Make a separate diagnosti...

Doug Wyatt via All-commits all-commits at lists.llvm.org
Wed Jul 16 08:24:50 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: cfc20ea15eea5704a79dd4e8d0eaeef4cf053268
      https://github.com/llvm/llvm-project/commit/cfc20ea15eea5704a79dd4e8d0eaeef4cf053268
  Author: Doug Wyatt <doug at sonosphere.com>
  Date:   2025-07-16 (Wed, 16 Jul 2025)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/include/clang/Basic/DiagnosticGroups.td
    M clang/include/clang/Basic/DiagnosticSemaKinds.td
    M clang/lib/Sema/SemaDeclCXX.cpp
    M clang/test/Sema/attr-nonblocking-sema.cpp

  Log Message:
  -----------
  [Clang] FunctionEffects: Make a separate diagnostic group for redeclarations/overrides where effects are implicit. (#148690)

The current function effect diagnostics include these behaviors:

When you declare a function `nonblocking` (typically in a header) and
then omit the attribute on the implementation (or any other
redeclaration), Clang warns: attribute 'nonblocking' on function does
not match previous declaration.

But if a `nonblocking` function is a C++ virtual method, then overrides
are implicitly nonblocking; the attribute doesn't need to be explicitly
stated.

These behaviors are arguably inconsistent -- and also, both, more
pedantic than the rest of the function effect diagnostics.

This PR accomplishes two things:

- Separates the diagnostic on a redeclaration into a new group,
`-Wfunction-effect-redeclarations`, so it can be disabled independently.

- Adds a second diagnostic to this new group, for the case of an
override method missing the attribute. (This helps in a situation where
I'm trying to add `nonblocking` via a macro that does other things and I
want to know that the macro is missing on an override declaration.)

---------

Co-authored-by: Doug Wyatt <dwyatt at apple.com>
Co-authored-by: Sirraide <aeternalmail at gmail.com>



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list