[Bug c++/81853] New: [C++14] "using namespace" is not a constant expression in function-like macro
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81853 Bug ID: 81853 Summary: [C++14] "using namespace" is not a constant expression in function-like macro Product: gcc Version: 7.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: t.poechtrager at gmail dot com Target Milestone: --- $ g++ --version g++ (GCC) 7.1.1 20170630 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --- $ cat test.cpp namespace test { constexpr int test_fun() { return 42; } } #define test_macro() \ ({ \ using namespace test; \ test_fun(); \ }) int main() { constexpr int test_var = test_macro(); return test_var; } --- $ g++ test.cpp test.cpp: In function ‘int main()’: test.cpp:8:19: error: statement is not a constant expression using namespace test; \ ^ test.cpp:14:30: note: in expansion of macro ‘test_macro’ constexpr int test_var = test_macro(); ^~ --- Clang accepts this since 3.4: $ clang++ test.cpp -std=c++14 && ./a.out ; echo $? 42
[Bug lto/65544] LTO link fails with -static-libstdc++ + weak new/delete operators
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65544 --- Comment #4 from Thomas Pöchtrager --- If it matters, there are no linker errors with -fno-use-linker-plugin.
[Bug lto/65544] LTO link fails with -static-libstdc++ + weak new/delete operators
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65544 --- Comment #3 from Thomas Pöchtrager --- (In reply to Richard Biener from comment #2) > Can you verify if the cross compiler uses a linker-plugin by specifying > -fuse-linker-plugin? Without that errors like this are unfortunately > expected. The problem persits with -fuse-linker-plugin. $ i686-w64-mingw32-g++ test.cpp -fuse-linker-plugin -flto -static-libstdc++ -v Using built-in specs. COLLECT_GCC=i686-w64-mingw32-g++ COLLECT_LTO_WRAPPER=/opt/compiler/mingw-w64/libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper Target: i686-w64-mingw32 Configured with: ../configure --prefix=/opt/compiler/mingw-w64 --target=i686-w64-mingw32 --with-gnu-ld --with-gnu-as --enable-languages=c,c++,lto --disable-multilib --enable-lto --enable-threads=posix Thread model: posix gcc version 4.9.2 (GCC) COLLECT_GCC_OPTIONS='-fuse-linker-plugin' '-flto' '-v' '-shared-libgcc' '-mtune=generic' '-march=pentiumpro' /opt/compiler/mingw-w64/libexec/gcc/i686-w64-mingw32/4.9.2/cc1plus -quiet -v -D_REENTRANT test.cpp -quiet -dumpbase test.cpp -mtune=generic -march=pentiumpro -auxbase test -version -fuse-linker-plugin -flto -o /tmp/ccnj4m7D.s GNU C++ (GCC) version 4.9.2 (i686-w64-mingw32) compiled by GNU C version 4.9.1, GMP version 6.0.0, MPFR version 3.1.2-p3, MPC version 1.0.2 warning: MPFR header version 3.1.2-p3 differs from library version 3.1.2-p11. warning: MPC header version 1.0.2 differs from library version 1.0.3. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "/opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/sys-include" #include "..." search starts here: #include <...> search starts here: /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/include/c++/4.9.2 /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/include/c++/4.9.2/i686-w64-mingw32 /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/include/c++/4.9.2/backward /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/include /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/include-fixed /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/include End of search list. GNU C++ (GCC) version 4.9.2 (i686-w64-mingw32) compiled by GNU C version 4.9.1, GMP version 6.0.0, MPFR version 3.1.2-p3, MPC version 1.0.2 warning: MPFR header version 3.1.2-p3 differs from library version 3.1.2-p11. warning: MPC header version 1.0.2 differs from library version 1.0.3. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: a4174c607d6c7ea8e319dc3ef635686f COLLECT_GCC_OPTIONS='-fuse-linker-plugin' '-flto' '-v' '-shared-libgcc' '-mtune=generic' '-march=pentiumpro' /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/as -v -o /tmp/ccy6gCyh.o /tmp/ccnj4m7D.s GNU assembler version 2.25 (i686-w64-mingw32) using BFD version (GNU Binutils) 2.25 COMPILER_PATH=/opt/compiler/mingw-w64/libexec/gcc/i686-w64-mingw32/4.9.2/:/opt/compiler/mingw-w64/libexec/gcc/i686-w64-mingw32/4.9.2/:/opt/compiler/mingw-w64/libexec/gcc/i686-w64-mingw32/:/opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/:/opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/:/opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ LIBRARY_PATH=/opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/:/opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/:/opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/ COLLECT_GCC_OPTIONS='-fuse-linker-plugin' '-flto' '-v' '-shared-libgcc' '-mtune=generic' '-march=pentiumpro' /opt/compiler/mingw-w64/libexec/gcc/i686-w64-mingw32/4.9.2/collect2 -plugin /opt/compiler/mingw-w64/libexec/gcc/i686-w64-mingw32/4.9.2/liblto_plugin.so -plugin-opt=/opt/compiler/mingw-w64/libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper -plugin-opt=-fresolution=/tmp/ccFrtw0U.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=-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 -flto -m i386pe -Bdynamic /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/crt2.o /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/crtbegin.o -L/opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2 -L/opt/compiler/mingw-w64/lib/gcc/i
[Bug lto/65544] LTO link fails with -static-libstdc++ + weak new/delete operators
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65544 Thomas Pöchtrager changed: What|Removed |Added Version|unknown |4.9.2 --- Comment #1 from Thomas Pöchtrager --- Sorry, the MinGW version has ben cut, it's gcc version 4.9.2 (GCC)
[Bug lto/65544] New: LTO link fails with -static-libstdc++ + weak new/delete operators
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65544 Bug ID: 65544 Summary: LTO link fails with -static-libstdc++ + weak new/delete operators Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto Assignee: unassigned at gcc dot gnu.org Reporter: t.poechtrager at gmail dot com $ cat test.cpp #include #include #include #define WEAK __attribute__((weak)) WEAK void *operator new(size_t size) throw() { void *p = malloc(size); if(!p) abort(); return p; } WEAK void *operator new[](size_t size) throw() { void *p = malloc(size); if(!p) abort(); return p; } WEAK void operator delete(void *p) throw() { if(p) free(p); } WEAK void operator delete(void *p, size_t) throw() { if(p) free(p); } WEAK void operator delete[](void *p) throw() { if(p) free(p); } WEAK void operator delete[](void *p, size_t) throw() { if(p) free(p); } int main(){} $ i686-w64-mingw32-g++ test.cpp -static-libstdc++ # works $ i686-w64-mingw32-g++ test.cpp -flto # works $ g++ test.cpp -flto -static-libstdc++ # native g++ works too $ g++ test.cpp -flto -static-libstdc++ -m32# 32-bit is no problem either $ i686-w64-mingw32-g++ test.cpp -flto -static-libstdc++ `__ZdlPv' referenced in section `.text$_ZNSt9exceptionD0Ev' of /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/libstdc++.a(eh_exception.o): defined in discarded section `.text' of /tmp/cc4sS08t.o (symbol from plugin) `__ZdlPv' referenced in section `.text$_ZNSt13bad_exceptionD0Ev' of /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/libstdc++.a(eh_exception.o): defined in discarded section `.text' of /tmp/cc4sS08t.o (symbol from plugin) `__ZdlPv' referenced in section `.text$_ZN10__cxxabiv115__forced_unwindD0Ev' of /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/libstdc++.a(eh_exception.o): defined in discarded section `.text' of /tmp/cc4sS08t.o (symbol from plugin) `__ZdlPv' referenced in section `.text$_ZN10__cxxabiv119__foreign_exceptionD0Ev' of /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/libstdc++.a(eh_exception.o): defined in discarded section `.text' of /tmp/cc4sS08t.o (symbol from plugin) `__ZdlPv' referenced in section `.text$_ZN9__gnu_cxx24__concurrence_lock_errorD0Ev[__ZN9__gnu_cxx24__concurrence_lock_errorD0Ev]' of /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/libstdc++.a(eh_alloc.o): defined in discarded section `.text' of /tmp/cc4sS08t.o (symbol from plugin) `__ZdlPv' referenced in section `.text$_ZN9__gnu_cxx26__concurrence_unlock_errorD0Ev[__ZN9__gnu_cxx26__concurrence_unlock_errorD0Ev]' of /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/libstdc++.a(eh_alloc.o): defined in discarded section `.text' of /tmp/cc4sS08t.o (symbol from plugin) `__ZdlPv' referenced in section `.text$_ZN10__cxxabiv120__si_class_type_infoD0Ev' of /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/libstdc++.a(si_class_type_info.o): defined in discarded section `.text' of /tmp/cc4sS08t.o (symbol from plugin) `__ZdlPv' referenced in section `.text$_ZNSt9type_infoD0Ev' of /opt/compiler/mingw-w64/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/libstdc++.a(tinfo.o): defined in discarded section `.text' of /tmp/cc4sS08t.o (symbol from plugin) `__ZdlPv' referenced in section `.text$_ZN10__cxxabiv117__class_type_infoD0Ev' of /opt
[Bug c/61564] New: #pragma GCC optimize ("-fno-lto") causes the compiler to crash
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61564 Bug ID: 61564 Summary: #pragma GCC optimize ("-fno-lto") causes the compiler to crash Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: t.poechtrager at gmail dot com Target: Linux x86_64, i686-w64-mingw32 and others $ cat test.cpp #pragma GCC push_options #pragma GCC optimize ("-fno-lto") int main(void){return 0;} #pragma GCC pop_options ### GCC 4.9.0 ### $ LC_ALL=C gcc test.cpp -flto test.cpp:4:24: internal compiler error: Segmentation fault #pragma GCC pop_options ^ Please submit a full bug report, with preprocessed source if appropriate. See for instructions. Preprocessed source stored into /tmp/ccpuDCNO.out file, please attach this to your bugreport. ### GCC 4.6.4 ### $ LC_ALL=C gcc-4.6 test.cpp -flto # no crash