================
@@ -14127,6 +14093,15 @@ void Sema::AddInitializerToDecl(Decl *RealDecl, Expr
*Init, bool DirectInit) {
return;
}
+ // handleAliasAttr() runs before the initializer is attached to the VarDecl,
+ // so it cannot determine that an extern declaration with an initializer is a
+ // definition. Diagnose the conflict now that an initializer is present and
----------------
keepyixiao wrote:
I have a question I'd like to ask about the following case:
```cpp
int v1;
struct S {
static int i __attribute__((alias("v1")));
};
int S::i = 12;
```
Should
```static int i __attribute__((alias("v1")));```
be considered a definition or merely a declaration here?
According to the standard C++ rules, an in-class declaration of a non-inline
static data member is normally not a definition.
However, under the semantics of the alias extension, the alias declaration
itself appears to define the corresponding symbol.
So I'm a little unsure how this declaration should be classified in this case.
https://github.com/llvm/llvm-project/pull/223124
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits