public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/104040] New: linker: when exported template class from module is used in several .cpp with same tpl arg ~ undefined reference to not default non-inline destructor
@ 2022-01-15  5:34 sm0ke999 at yandex dot ru
  2024-04-10  1:40 ` [Bug c++/104040] " cvs-commit at gcc dot gnu.org
  2024-04-10  1:51 ` nshead at gcc dot gnu.org
  0 siblings, 2 replies; 3+ messages in thread
From: sm0ke999 at yandex dot ru @ 2022-01-15  5:34 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 104040
           Summary: linker: when exported template class from module is
                    used in several .cpp with same tpl arg ~ undefined
                    reference to not default non-inline destructor
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sm0ke999 at yandex dot ru
  Target Milestone: ---

Created attachment 52201
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52201&action=edit
-save-temps

There is minimal example of two files, using modules:

//lib.cpp
export module test;

export template <typename T>
struct test {
        T v_;

        test(T v) : v_(v) {}

        //inline
        ~test() {}
};

export struct omg {
        using tt = test<bool>;

        static tt go(tt t) {
                return t;
        }
};
//end

//main.cpp
import test;

int main() {
        test<bool> t = false;
        return 0;
}
//end

1. If we remove class omg then all compiles fine.

2. Or if we change "export struct omg { using tt = test<bool>;" to "export
struct omg { using tt = test<int>;" then again all fine.

3. Or if we change "~test() {}" to "inline ~test() {}" then fine.

I think this problem related not only to just destructor, but to any not-inline
method in exported template class.

Here compile messages:

Perform "_build" task:
x86_64-w64-mingw32-g++.exe -v -save-temps -Wall -O3 -std=c++20 -m64 -c
D:\prog\Dropbox\cpp\vs-code/src/lib.cpp -o
D:\prog\Dropbox\cpp\vs-code/obj/src/lib.o -fmodules-ts
Using built-in specs.
COLLECT_GCC=x86_64-w64-mingw32-g++.exe
OFFLOAD_TARGET_NAMES=nvptx-none
Target: x86_64-w64-mingw32
Configured with: ../configure
--prefix=/R/winlibs64_stage/inst_gcc-11.2.0/share/gcc
--build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32
--enable-offload-targets=nvptx-none --with-pkgversion='MinGW-W64
x86_64-ucrt-posix-seh, built by Brecht Sanders' --with-tune=generic
--enable-checking=release --enable-threads=posix --disable-sjlj-exceptions
--disable-libunwind-exceptions --disable-serial-configure --disable-bootstrap
--enable-host-shared --enable-plugin --disable-default-ssp --disable-rpath
--enable-libstdcxx-pch --enable-libstdcxx-time=yes --disable-libstdcxx-debug
--disable-version-specific-runtime-libs --with-stabs --disable-symvers
--enable-languages=c,c++,fortran,lto,objc,obj-c++,d,jit --disable-gold
--disable-nls --disable-stage1-checking --disable-win32-registry
--disable-multilib --enable-ld --enable-libquadmath --enable-libada
--enable-libssp --enable-libstdcxx --enable-lto --enable-fully-dynamic-string
--enable-libgomp --enable-graphite --enable-mingw-wildcard
--with-mpc=/d/Prog/winlibs64_stage/custombuilt
--with-mpfr=/d/Prog/winlibs64_stage/custombuilt
--with-gmp=/d/Prog/winlibs64_stage/custombuilt
--with-isl=/d/Prog/winlibs64_stage/custombuilt --enable-install-libiberty
--enable-__cxa_atexit --without-included-gettext --with-diagnostics-color=auto
--enable-clocale=generic --with-libiconv --with-system-zlib
--with-build-sysroot=/R/winlibs64_stage/gcc-11.2.0/build_mingw/mingw-w64
CFLAGS=-I/d/Prog/winlibs64_stage/custombuilt/include/libdl-win32
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.2.0 (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders)   
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-O3' '-std=c++20' '-m64' '-c'
'-o' 'D:\prog\Dropbox\cpp\vs-code/obj/src/lib.o' '-fmodules-ts'
'-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir'
'D:\prog\Dropbox\cpp\vs-code/obj/src/'
 d:/prog/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/11.2.0/cc1plus.exe -E
-quiet -v -iprefix d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/
-D_REENTRANT D:\prog\Dropbox\cpp\vs-code/src/lib.cpp -m64 -mtune=generic
-march=x86-64 -std=c++20 -Wall -fmodules-ts -O3 -fpch-preprocess -o
D:\prog\Dropbox\cpp\vs-code/obj/src/lib.ii
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0"
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0/x86_64-w64-mingw32"
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0/backward"
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/include"
ignoring nonexistent directory
"R:/winlibs64_stage/inst_gcc-11.2.0/share/gcc/include"
ignoring nonexistent directory
"/R/winlibs64_stage/inst_gcc-11.2.0/share/gcc/include"
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/include-fixed"
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/include"
ignoring nonexistent directory "/mingw/include"
#include "..." search starts here:
#include <...> search starts here:

d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0

d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0/x86_64-w64-mingw32

d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0/backward
 d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/include
 d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include
 d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/include-fixed

d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-O3' '-std=c++20' '-m64' '-c'
'-o' 'D:\prog\Dropbox\cpp\vs-code/obj/src/lib.o' '-fmodules-ts'
'-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir'
'D:\prog\Dropbox\cpp\vs-code/obj/src/'
 d:/prog/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/11.2.0/cc1plus.exe
-fpreprocessed D:\prog\Dropbox\cpp\vs-code/obj/src/lib.ii -quiet -dumpdir
D:\prog\Dropbox\cpp\vs-code/obj/src/ -dumpbase lib.cpp -dumpbase-ext .cpp -m64
-mtune=generic -march=x86-64 -O3 -Wall -std=c++20 -version -fmodules-ts -o
D:\prog\Dropbox\cpp\vs-code/obj/src/lib.s
GNU C++20 (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) version
11.2.0 (x86_64-w64-mingw32)
        compiled by GNU C version 11.2.0, GMP version 6.2.1, MPFR version
4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++20 (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) version
11.2.0 (x86_64-w64-mingw32)
        compiled by GNU C version 11.2.0, GMP version 6.2.1, MPFR version
4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 07b662ace814af3cc4c07cbb8046335b
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-O3' '-std=c++20' '-m64' '-c'
'-o' 'D:\prog\Dropbox\cpp\vs-code/obj/src/lib.o' '-fmodules-ts'
'-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir'
'D:\prog\Dropbox\cpp\vs-code/obj/src/'

d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/as.exe
-v --64 -o D:\prog\Dropbox\cpp\vs-code/obj/src/lib.o
D:\prog\Dropbox\cpp\vs-code/obj/src/lib.s
GNU assembler version 2.37 (x86_64-w64-mingw32) using BFD version (Binutils for
MinGW-W64 x86_64, built by Brecht Sanders) 2.37
COMPILER_PATH=d:/prog/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/11.2.0/;d:/prog/mingw64/bin/../libexec/gcc/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/
LIBRARY_PATH=d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/;d:/prog/mingw64/bin/../lib/gcc/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../lib/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-O3' '-std=c++20' '-m64' '-c'
'-o' 'D:\prog\Dropbox\cpp\vs-code/obj/src/lib.o' '-fmodules-ts'
'-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir'
'D:\prog\Dropbox\cpp\vs-code/obj/src/lib.'
x86_64-w64-mingw32-g++.exe -v -save-temps -Wall -O3 -std=c++20 -m64 -c
D:\prog\Dropbox\cpp\vs-code/src/main.cpp -o
D:\prog\Dropbox\cpp\vs-code/obj/src/main.o -fmodules-ts
Using built-in specs.
COLLECT_GCC=x86_64-w64-mingw32-g++.exe
OFFLOAD_TARGET_NAMES=nvptx-none
Target: x86_64-w64-mingw32
Configured with: ../configure
--prefix=/R/winlibs64_stage/inst_gcc-11.2.0/share/gcc
--build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32
--enable-offload-targets=nvptx-none --with-pkgversion='MinGW-W64
x86_64-ucrt-posix-seh, built by Brecht Sanders' --with-tune=generic
--enable-checking=release --enable-threads=posix --disable-sjlj-exceptions
--disable-libunwind-exceptions --disable-serial-configure --disable-bootstrap
--enable-host-shared --enable-plugin --disable-default-ssp --disable-rpath
--enable-libstdcxx-pch --enable-libstdcxx-time=yes --disable-libstdcxx-debug
--disable-version-specific-runtime-libs --with-stabs --disable-symvers
--enable-languages=c,c++,fortran,lto,objc,obj-c++,d,jit --disable-gold
--disable-nls --disable-stage1-checking --disable-win32-registry
--disable-multilib --enable-ld --enable-libquadmath --enable-libada
--enable-libssp --enable-libstdcxx --enable-lto --enable-fully-dynamic-string
--enable-libgomp --enable-graphite --enable-mingw-wildcard
--with-mpc=/d/Prog/winlibs64_stage/custombuilt
--with-mpfr=/d/Prog/winlibs64_stage/custombuilt
--with-gmp=/d/Prog/winlibs64_stage/custombuilt
--with-isl=/d/Prog/winlibs64_stage/custombuilt --enable-install-libiberty
--enable-__cxa_atexit --without-included-gettext --with-diagnostics-color=auto
--enable-clocale=generic --with-libiconv --with-system-zlib
--with-build-sysroot=/R/winlibs64_stage/gcc-11.2.0/build_mingw/mingw-w64
CFLAGS=-I/d/Prog/winlibs64_stage/custombuilt/include/libdl-win32
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.2.0 (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders)
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-O3' '-std=c++20' '-m64' '-c'
'-o' 'D:\prog\Dropbox\cpp\vs-code/obj/src/main.o' '-fmodules-ts'
'-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir'
'D:\prog\Dropbox\cpp\vs-code/obj/src/'
 d:/prog/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/11.2.0/cc1plus.exe -E
-quiet -v -iprefix d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/
-D_REENTRANT D:\prog\Dropbox\cpp\vs-code/src/main.cpp -m64 -mtune=generic
-march=x86-64 -std=c++20 -Wall -fmodules-ts -O3 -fpch-preprocess -o
D:\prog\Dropbox\cpp\vs-code/obj/src/main.ii
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0"
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0/x86_64-w64-mingw32"
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0/backward"
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/include"
ignoring nonexistent directory
"R:/winlibs64_stage/inst_gcc-11.2.0/share/gcc/include"
ignoring nonexistent directory
"/R/winlibs64_stage/inst_gcc-11.2.0/share/gcc/include"
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/include-fixed"
ignoring duplicate directory
"d:/prog/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/include"
ignoring nonexistent directory "/mingw/include"
#include "..." search starts here:
#include <...> search starts here:

d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0

d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0/x86_64-w64-mingw32

d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include/c++/11.2.0/backward
 d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/include
 d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../include
 d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/include-fixed

d:\prog\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-O3' '-std=c++20' '-m64' '-c'
'-o' 'D:\prog\Dropbox\cpp\vs-code/obj/src/main.o' '-fmodules-ts'
'-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir'
'D:\prog\Dropbox\cpp\vs-code/obj/src/'
 d:/prog/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/11.2.0/cc1plus.exe
-fpreprocessed D:\prog\Dropbox\cpp\vs-code/obj/src/main.ii -quiet -dumpdir
D:\prog\Dropbox\cpp\vs-code/obj/src/ -dumpbase main.cpp -dumpbase-ext .cpp -m64
-mtune=generic -march=x86-64 -O3 -Wall -std=c++20 -version -fmodules-ts -o
D:\prog\Dropbox\cpp\vs-code/obj/src/main.s
GNU C++20 (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) version
11.2.0 (x86_64-w64-mingw32)
        compiled by GNU C version 11.2.0, GMP version 6.2.1, MPFR version
4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++20 (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) version
11.2.0 (x86_64-w64-mingw32)
        compiled by GNU C version 11.2.0, GMP version 6.2.1, MPFR version
4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 07b662ace814af3cc4c07cbb8046335b
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-O3' '-std=c++20' '-m64' '-c'
'-o' 'D:\prog\Dropbox\cpp\vs-code/obj/src/main.o' '-fmodules-ts'
'-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir'
'D:\prog\Dropbox\cpp\vs-code/obj/src/'

d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/as.exe
-v --64 -o D:\prog\Dropbox\cpp\vs-code/obj/src/main.o
D:\prog\Dropbox\cpp\vs-code/obj/src/main.s
GNU assembler version 2.37 (x86_64-w64-mingw32) using BFD version (Binutils for
MinGW-W64 x86_64, built by Brecht Sanders) 2.37
COMPILER_PATH=d:/prog/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/11.2.0/;d:/prog/mingw64/bin/../libexec/gcc/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/
LIBRARY_PATH=d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/;d:/prog/mingw64/bin/../lib/gcc/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../lib/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-O3' '-std=c++20' '-m64' '-c'
'-o' 'D:\prog\Dropbox\cpp\vs-code/obj/src/main.o' '-fmodules-ts'
'-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir'
'D:\prog\Dropbox\cpp\vs-code/obj/src/main.'
Perform "_link" task:
x86_64-w64-mingw32-g++.exe -v -save-temps -o
D:\prog\Dropbox\cpp\vs-code/bin/test.exe
D:\prog\Dropbox\cpp\vs-code/obj/src/lib.o
D:\prog\Dropbox\cpp\vs-code/obj/src/main.o -s -m64 -fmodules-ts
Using built-in specs.
COLLECT_GCC=x86_64-w64-mingw32-g++.exe
COLLECT_LTO_WRAPPER=d:/prog/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/11.2.0/lto-wrapper.exe
OFFLOAD_TARGET_NAMES=nvptx-none
Target: x86_64-w64-mingw32
Configured with: ../configure
--prefix=/R/winlibs64_stage/inst_gcc-11.2.0/share/gcc
--build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32
--enable-offload-targets=nvptx-none --with-pkgversion='MinGW-W64
x86_64-ucrt-posix-seh, built by Brecht Sanders' --with-tune=generic
--enable-checking=release --enable-threads=posix --disable-sjlj-exceptions
--disable-libunwind-exceptions --disable-serial-configure --disable-bootstrap
--enable-host-shared --enable-plugin --disable-default-ssp --disable-rpath
--enable-libstdcxx-pch --enable-libstdcxx-time=yes --disable-libstdcxx-debug
--disable-version-specific-runtime-libs --with-stabs --disable-symvers
--enable-languages=c,c++,fortran,lto,objc,obj-c++,d,jit --disable-gold
--disable-nls --disable-stage1-checking --disable-win32-registry
--disable-multilib --enable-ld --enable-libquadmath --enable-libada
--enable-libssp --enable-libstdcxx --enable-lto --enable-fully-dynamic-string
--enable-libgomp --enable-graphite --enable-mingw-wildcard
--with-mpc=/d/Prog/winlibs64_stage/custombuilt
--with-mpfr=/d/Prog/winlibs64_stage/custombuilt
--with-gmp=/d/Prog/winlibs64_stage/custombuilt
--with-isl=/d/Prog/winlibs64_stage/custombuilt --enable-install-libiberty
--enable-__cxa_atexit --without-included-gettext --with-diagnostics-color=auto
--enable-clocale=generic --with-libiconv --with-system-zlib
--with-build-sysroot=/R/winlibs64_stage/gcc-11.2.0/build_mingw/mingw-w64
CFLAGS=-I/d/Prog/winlibs64_stage/custombuilt/include/libdl-win32
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.2.0 (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) 
COMPILER_PATH=d:/prog/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/11.2.0/;d:/prog/mingw64/bin/../libexec/gcc/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/
LIBRARY_PATH=d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/;d:/prog/mingw64/bin/../lib/gcc/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../lib/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/;d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o'
'D:\prog\Dropbox\cpp\vs-code/bin/test.exe' '-s' '-m64' '-fmodules-ts'
'-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir'
'D:\prog\Dropbox\cpp\vs-code/bin/test.'
 d:/prog/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/11.2.0/collect2.exe
-plugin
d:/prog/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/11.2.0/liblto_plugin.dll
-plugin-opt=d:/prog/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/11.2.0/lto-wrapper.exe
-plugin-opt=-fresolution=D:\prog\Dropbox\cpp\vs-code/bin/test.res
-plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc_s
-plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname
-plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt
-plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lpthread
-plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32
-plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32
-plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc_s
-plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname
-plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt
-plugin-opt=-pass-through=-lkernel32 -m i386pep -Bdynamic -o
D:\prog\Dropbox\cpp\vs-code/bin/test.exe -s
d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o
d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/crtbegin.o
-Ld:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0
-Ld:/prog/mingw64/bin/../lib/gcc
-Ld:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib
-Ld:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../lib
-Ld:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib
-Ld:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../..
D:\prog\Dropbox\cpp\vs-code/obj/src/lib.o
D:\prog\Dropbox\cpp\vs-code/obj/src/main.o -lstdc++ -lmingw32 -lgcc_s -lgcc
-lmoldname -lmingwex -lmsvcrt -lkernel32 -lpthread -ladvapi32 -lshell32
-luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt
-lkernel32 d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/crtend.o
d:/prog/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
D:\prog\Dropbox\cpp\vs-code/obj/src/main.o:main.cpp:(.text.startup+0x14):
undefined reference to `test<bool>::~test()'
collect2.exe: error: ld returned 1 exit status

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/104040] linker: when exported template class from module is used in several .cpp with same tpl arg ~ undefined reference to not default non-inline destructor
  2022-01-15  5:34 [Bug c++/104040] New: linker: when exported template class from module is used in several .cpp with same tpl arg ~ undefined reference to not default non-inline destructor sm0ke999 at yandex dot ru
@ 2024-04-10  1:40 ` cvs-commit at gcc dot gnu.org
  2024-04-10  1:51 ` nshead at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2024-04-10  1:40 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Nathaniel Shead <nshead@gcc.gnu.org>:

https://gcc.gnu.org/g:0774240b4df9a9bc48ce33a9625788e402498f5a

commit r14-9883-g0774240b4df9a9bc48ce33a9625788e402498f5a
Author: Nathaniel Shead <nathanieloshead@gmail.com>
Date:   Fri Mar 29 13:53:54 2024 +1100

    c++: Keep DECL_SAVED_TREE of cdtor instantiations in modules [PR104040]

    A template instantiation still needs to have its DECL_SAVED_TREE so that
    its definition is emitted into the CMI. This way it can be emitted in
    the object file of any importers that use it, in case it doesn't end up
    getting emitted in this TU.

    This is true even for maybe-in-charge functions, because we don't
    currently stream the clones directly but instead regenerate them from
    this function.

            PR c++/104040

    gcc/cp/ChangeLog:

            * semantics.cc (expand_or_defer_fn_1): Keep DECL_SAVED_TREE for
            all vague linkage cdtors with modules.

    gcc/testsuite/ChangeLog:

            * g++.dg/modules/pr104040_a.C: New test.
            * g++.dg/modules/pr104040_b.C: New test.

    Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
    Reviewed-by: Jason Merrill <jason@redhat.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/104040] linker: when exported template class from module is used in several .cpp with same tpl arg ~ undefined reference to not default non-inline destructor
  2022-01-15  5:34 [Bug c++/104040] New: linker: when exported template class from module is used in several .cpp with same tpl arg ~ undefined reference to not default non-inline destructor sm0ke999 at yandex dot ru
  2024-04-10  1:40 ` [Bug c++/104040] " cvs-commit at gcc dot gnu.org
@ 2024-04-10  1:51 ` nshead at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: nshead at gcc dot gnu.org @ 2024-04-10  1:51 UTC (permalink / raw)
  To: gcc-bugs

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

Nathaniel Shead <nshead at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nshead at gcc dot gnu.org
   Target Milestone|---                         |14.0
         Resolution|---                         |FIXED
             Status|UNCONFIRMED                 |RESOLVED
           Assignee|unassigned at gcc dot gnu.org      |nshead at gcc dot gnu.org

--- Comment #2 from Nathaniel Shead <nshead at gcc dot gnu.org> ---
Fixed for GCC 14.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-04-10  1:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-15  5:34 [Bug c++/104040] New: linker: when exported template class from module is used in several .cpp with same tpl arg ~ undefined reference to not default non-inline destructor sm0ke999 at yandex dot ru
2024-04-10  1:40 ` [Bug c++/104040] " cvs-commit at gcc dot gnu.org
2024-04-10  1:51 ` nshead at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).