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".

Reply via email to