[clang] [Clang] Diagnose conflict between always_inline/noinline attributes (PR #215173)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 11 05:59:13 PDT 2026
================
@@ -779,10 +779,10 @@ void CodeGenFunction::EmitLabelStmt(const LabelStmt &S) {
}
void CodeGenFunction::EmitAttributedStmt(const AttributedStmt &S) {
- bool nomerge = false;
- bool noinline = false;
- bool alwaysinline = false;
- bool noconvergent = false;
+ bool nomerge = InNoMergeAttributedStmt;
+ bool noinline = InNoInlineAttributedStmt;
+ bool alwaysinline = InAlwaysInlineAttributedStmt;
+ bool noconvergent = InNoConvergentAttributedStmt;
StringRef amdgpuAVMode;
----------------
erichkeane wrote:
Uh, why shouldn't musstail propagate inwards? Why should:
```
[[musttail]] {
some_call;
}
```
and
```
[[musttail]] {
[[always_inline]]
some_call;
}
```
Have DIFFERENT musttail behaviors? EXISTING behavior is that it will propagate to the inner statement, unless we have an attributedstmt (possibly/likely unrelated), so it shouldn't 'change' it.
https://github.com/llvm/llvm-project/pull/215173
More information about the cfe-commits
mailing list