Izaron added a comment.

I will provide more context in this comment.

**Why this patch?**
Clang currently has a warning for duplicating specifiers (`inline inline`, 
`extern extern`, `consteval consteval`, etc.), but has no warnings for 
redundant weaker specifiers.
I suggest to add such a group of warnings, starting  from `inline 
constexpr`/`inline consteval` functions.

The Standard says (dcl.constexpr 
<http://eel.is/c++draft/dcl.constexpr#1.sentence-3>) that 
`constexpr`/`consteval` functions are implicitly `inline`. But Clang doesn't 
tell programmers that.
The volume of affected code can be seen in GitHub Search: inline constexpr 
<https://github.com/search?q=inline+constexpr&type=Code>, inline consteval 
<https://github.com/search?q=inline+consteval&type=Code>.

**What about the other meaning of `inline`?**
Some years ago, the `inline` keyword meant not only "there may be multiple 
definitions", but also "there will be `inlinehint` attribute added in LLVM IR".
Fortunately, this is no more since Clang 3.3 release.
`constexpr` and `inline constexpr` functions emit the same LLVM IR attributes. 
(`consteval` function aren't even emitted to LLVM IR, executing exclusively at 
compile-time)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D117435/new/

https://reviews.llvm.org/D117435

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to