https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109816
Bug ID: 109816
Summary: [14 Regression] r14-321 fix for PR108969 breaks NVPTX
offloading due to __asm (".globl
_ZSt21ios_base_library_initv")
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: burnus at gcc dot gnu.org
CC: jakub at gcc dot gnu.org
Target Milestone: ---
Commit r14-321-g9a41d2cdbcd2af77a3a91a840a3a13f0eb39971b
"libstdc++: Another attempt to ensure g++ 13+ compiled programs enforce gcc
13.2+ libstdc++.so.6 [PR108969]"
breaks some offload compiling with nvptx.
For instance,
https://github.com/TApplencourt/OvO/blob/master/test_src/cpp/hierarchical_parallelism/reduction_add-complex_double/target__teams__parallel_for_simd.cpp
fails to assemble with ptxas (either at compile time or at runtime) with:
ptxas a.xnvptx-none.mkoffload.s, line 8; fatal : Parsing error near '.globl':
syntax error
The problem is the code:
// #APP
.globl _ZSt21ios_base_library_initv
// #NO_APP
Which the commit added to the header file as:
#if !__has_attribute(__init_priority__)
static ios_base::Init __ioinit;
+#elif defined(_GLIBCXX_SYMVER_GNU)
+ __extension__ __asm (".globl _ZSt21ios_base_library_initv");
#endif
* * *
NOTE: With GCN offloading the program runs, presumably because the LLVM
assembler (mc) does not choke on ".globl".