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

Patrick Palka <ppalka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=112820
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2024-03-05
      Known to fail|                            |13.2.0, 14.0
             Status|UNCONFIRMED                 |NEW

--- Comment #2 from Patrick Palka <ppalka at gcc dot gnu.org> ---
Confirmed, thanks for the bug report.  Reduced (needs -fno-module-lazy):

$ cat 114229_a.C
module;
template<class> struct basic_streambuf { virtual void overflow() { } };
extern template struct basic_streambuf<long>;
export module modA;
export basic_streambuf<long> *p;

$ cat 114229_b.C
export module modB;
import modA;

$ cat 114229_c.C
import modA;
import modB;
int main() { }

$ cat 114229_d.C
template<class> struct basic_streambuf { virtual void overflow() { } };
template struct basic_streambuf<long>;

$ g++ -Wno-global-module -fmodules-ts -fno-module-lazy 114229_*.C
/usr/bin/ld: /tmp/ccNDPhFZ.o:(.rodata+0x0): multiple definition of `vtable for
basic_streambuf<long>'; /tmp/ccW7B4xy.o:(.rodata+0x0): first defined here

PR112820 also was extern template related.

Reply via email to