https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120824

            Bug ID: 120824
           Summary: [modules] Cannot export unnamed enum declared in GMF
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: m.cencora at gmail dot com
  Target Milestone: ---

$ cat sock_domain.h 
#pragma once

extern "C"
{

enum
{
    AF_INET,
    AF_UNIX
};

}


$ cat posix.mod.cpp 
module;

#include "sock_domain.h"

export module posix;

export
{
using ::AF_INET;
}


$ cat use.cpp 
import posix;

int main()
{
    AF_INET;
    AF_UNIX;
}

$ g++ -fmodules posix.mod.cpp use.cpp 
posix.mod.cpp:9:9: error: exporting ‘<unnamed enum> AF_INET’ that does not have
external linkage
    9 | using ::AF_INET;
      |         ^~~~~~~
In file included from posix.mod.cpp:3:
sock_domain.h:8:5: note: ‘<unnamed enum> AF_INET’ declared here with no linkage
    8 |     AF_INET,
      |     ^~~~~~~
In module imported at use.cpp:1:1:
posix: error: failed to read compiled module: Nie ma takiego pliku ani katalogu
posix: note: compiled module file is ‘gcm.cache/posix.gcm’
posix: note: imports must be built before being imported
posix: fatal error: returning to the gate for a mechanical issue


It is a semi-regression compared to gcc 13/14 where posix.mod.cpp compiled
correctly, but the enum was still not visible for importers.

It works fine on clang-20 (I didn't test other versions).

Reply via email to