rsmith added inline comments.

================
Comment at: Sema/SemaDecl.cpp:4654-4656
+      while (OwnerScope->getDeclKind() == Decl::LinkageSpec) {
+        OwnerScope = OwnerScope->getParent();
+      }
----------------
vsapsai wrote:
> Looks like `DeclContext::isTransparentContext()` might be relevant here. At 
> least I was able to get the assertion failure
> 
> > Assertion failed: (II && "Attempt to mangle unnamed decl."), function 
> > getMangledNameImpl, file llvm-project/clang/lib/CodeGen/CodeGenModule.cpp, 
> > line 913.
> 
> for
> ```lang=c++
> // clang -std=c++17 -fmodules-ts test-modules.cpp
> 
> export module M;
> export {
>     union {
>         int int_val;
>         float float_val;
>     };
> }
> ```
> 
> Also based on `isTransparentContext()` usage, inline namespaces can cause 
> problems. Currently, there are no problems, we have the error
> 
> > error: anonymous unions at namespace or global scope must be declared 
> > 'static'
> 
> and there are no negative consequences (as far as I can tell). According to 
> my bad standard knowledge that should be OK (haven't found non-static 
> anonymous unions to be allowed in this case).
Right, the correct way to spell this is `OwnerScope = 
Owner->getRedeclContext();`.


================
Comment at: Sema/SemaDecl.cpp:4659-4661
+          (isa<TranslationUnitDecl>(OwnerScope) ||
+           (isa<NamespaceDecl>(OwnerScope) &&
+            cast<NamespaceDecl>(OwnerScope)->getDeclName()))) {
----------------
vsapsai wrote:
> Checked if we need to do the same change s/Owner/OwnerScope/ elsewhere in 
> this method and looks like it is not required. We care if the owner is a 
> Record and we don't allow linkage specification in classes, so skipping 
> linkage scopes doesn't give us anything.
While you're here, `OwnerScope->isFileContext() && 
!OwnerScope->isInlineNamespace()` might be clearer. Or at least replace the 
`getDeclName()` with `!isInlineNamespace()`.


Repository:
  rC Clang

https://reviews.llvm.org/D45884



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

Reply via email to