erichkeane added inline comments.
================
Comment at: clang/test/Sema/attr-alwaysinline.cpp:48
+ if constexpr (D>0) {
+ // expected-warning@+6{{statement attribute 'always_inline' has higher
precedence than function attribute 'noinline'}}
+ // expected-note@#NO_DEP{{conflicting attribute is here}}
----------------
erichkeane wrote:
> aaron.ballman wrote:
> > Why is this not included in the `3` for: `// expected-warning@+4
> > 3{{statement attribute 'always_inline' has higher precedence than function
> > attribute 'noinline'}}`
> >
> > It's pretty unfortunate just how often this diagnostic triggers for the
> > same line of code. This seems rather chatty, can you help me understand
> > what's going on?
> I split them because they are diagnosing different 'things'. See the
> associated 'note' on it.
>
> THIS warning is the one that happens while forming the primary template (the
> non-dependent call to `non_dependent`), and is later suppressed in the
> individual instantiations (which is the logic with the 'old' statement in
> `SemaStmtAttr.cpp`).
>
> The set on line 50 is for `baz`, which we emit 3x, because we're
> instantiating this function 3x. Suppressing these isn't particularly
> possible without putting some sort of state in the AST of 'have we diagnosed
> this' as far as I can tell.
>
> The variadic case below defeats our suppression entirely, which is why it
> diagnoses so often. The non-dependent case can no longer be suppressed,
> because we don't have a good hold of which pre-instantiation call-exprs are
> associated with the post-instantiated call-exprs.
>
>
As far as the 'chattiness', I suspect using these attributes on a statement
with multiple call expressions is likely pretty rare. Using it on a dependent
call is probably less likely.
That said, this attribute is a ergonomic nightmare if there are any call
expressions in an argument list... I'm hoping whoever uses this is aware of
that!
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146323/new/
https://reviews.llvm.org/D146323
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits