public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/103937] New: Assembler error: symbol is already defined when compiling static member function templates
@ 2022-01-07  8:44 mac.zyg2 at protonmail dot com
  2022-01-07  8:44 ` [Bug c++/103937] " mac.zyg2 at protonmail dot com
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: mac.zyg2 at protonmail dot com @ 2022-01-07  8:44 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 103937
           Summary: Assembler error: symbol is already defined when
                    compiling static member function templates
           Product: gcc
           Version: 11.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mac.zyg2 at protonmail dot com
  Target Milestone: ---

Created attachment 52139
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52139&action=edit
Full error message for GCC 11.2

This code doesn't compile with "symbol ... is already defined":
```
class SortAlgorithm {
public:
    template<typename T>
    static void test(T* t, bool(*compare_func)() = 
                    []() -> bool { return true; }) {
        test(t);
    }
};

int main() {
    int arr[] { 1, 2 };
    SortAlgorithm::test(arr);
}
```

The names that are included in the error demangles to this:

```
>>> demangle('_ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NKUlvE_clEv')
'SortAlgorithm::test<int>(int*, bool (*)())::{default
arg#1}::{lambda()#1}::operator()() const'
>>> demangle('_ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NUlvE_4_FUNEv')
'SortAlgorithm::test<int>(int*, bool (*)())::{default
arg#1}::{lambda()#1}::_FUN()'
>>> demangle('_ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NKUlvE_cvS4_Ev')
'SortAlgorithm::test<int>(int*, bool (*)())::{default
arg#1}::{lambda()#1}::operator bool (*)()() const'
```

This code throws internal compiler error on trunk:

```
<source>:13:1: error: Two symbols with same comdat_group are not linked by the
same_comdat_group list.
   13 | }
      | ^
_ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NKUlvE_cvS4_Ev/6 (constexpr
SortAlgorithm::<lambda()>::operator bool (*)()() const) @0x7f86cadb8880
  Type: function definition analyzed
  Visibility: semantic_interposition no_reorder public weak comdat
comdat_group:_ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NKUlvE_cvS4_Ev one_only
artificial
  previous sharing asm name: 2
  References: _ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NUlvE_4_FUNEv/5 (addr)
__gxx_personality_v0/8 (addr) 
  Referring: 
  Function flags: body
  Called by: _ZN13SortAlgorithm4testIiEEvPT_PFbvE/7 
  Calls: 
_ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NKUlvE_cvS4_Ev/2 (constexpr
SortAlgorithm::<lambda()>::operator bool (*)()() const) @0x7f86cadb8440
  Type: function definition analyzed
  Visibility: semantic_interposition no_reorder public weak comdat
comdat_group:_ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NKUlvE_cvS4_Ev one_only
artificial
  next sharing asm name: 6
  References: _ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NUlvE_4_FUNEv/1 (addr)
__gxx_personality_v0/8 (addr) 
  Referring: 
  Function flags: body
  Called by: main/3 
  Calls: 
<source>:13:1: internal compiler error: symtab_node::verify failed
0x213d2c9 internal_error(char const*, ...)
        ???:0
0xbd4532 symtab_node::verify_symtab_nodes()
        ???:0
0xbf0a6f symbol_table::finalize_compilation_unit()
        ???:0
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Compiler returned: 1
```

Demo: https://godbolt.org/z/G796Wxehb

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

* [Bug c++/103937] Assembler error: symbol is already defined when compiling static member function templates
  2022-01-07  8:44 [Bug c++/103937] New: Assembler error: symbol is already defined when compiling static member function templates mac.zyg2 at protonmail dot com
@ 2022-01-07  8:44 ` mac.zyg2 at protonmail dot com
  2022-01-07  8:47 ` [Bug c++/103937] [11/12 Regression] Assembler error: symbol is already defined when compiling static member function templates since r11-7965-g23be03a0f243a084 marxin at gcc dot gnu.org
  2022-01-07  8:49 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: mac.zyg2 at protonmail dot com @ 2022-01-07  8:44 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from mac.zyg2 at protonmail dot com ---
Created attachment 52140
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52140&action=edit
Generated assembly on GCC 11.2

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

* [Bug c++/103937] [11/12 Regression] Assembler error: symbol is already defined when compiling static member function templates since r11-7965-g23be03a0f243a084
  2022-01-07  8:44 [Bug c++/103937] New: Assembler error: symbol is already defined when compiling static member function templates mac.zyg2 at protonmail dot com
  2022-01-07  8:44 ` [Bug c++/103937] " mac.zyg2 at protonmail dot com
@ 2022-01-07  8:47 ` marxin at gcc dot gnu.org
  2022-01-07  8:49 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: marxin at gcc dot gnu.org @ 2022-01-07  8:47 UTC (permalink / raw)
  To: gcc-bugs

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

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2022-01-07
           Keywords|                            |ice-on-valid-code
            Summary|Assembler error: symbol is  |[11/12 Regression]
                   |already defined when        |Assembler error: symbol is
                   |compiling static member     |already defined when
                   |function templates          |compiling static member
                   |                            |function templates since
                   |                            |r11-7965-g23be03a0f243a084
                 CC|                            |jason at gcc dot gnu.org,
                   |                            |marxin at gcc dot gnu.org
   Target Milestone|---                         |11.3
     Ever confirmed|0                           |1

--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
Confirmed, started with r11-7965-g23be03a0f243a084:

pr103937.C:13:1: error: Two symbols with same comdat_group are not linked by
the same_comdat_group list.
   13 | }
      | ^
_ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NKUlvE_cvS4_Ev/6 (constexpr
SortAlgorithm::<lambda()>::operator bool (*)()() const) @0x7ffff7933770
  Type: function definition analyzed
  Visibility: no_reorder public weak comdat
comdat_group:_ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NKUlvE_cvS4_Ev one_only
artificial
  previous sharing asm name: 2
  References: _ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NUlvE_4_FUNEv/5 (addr)
__gxx_personality_v0/8 (addr) 
  Referring: 
  Function flags: body
  Called by: _ZN13SortAlgorithm4testIiEEvPT_PFbvE/7 
  Calls: 
_ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NKUlvE_cvS4_Ev/2 (constexpr
SortAlgorithm::<lambda()>::operator bool (*)()() const) @0x7ffff7933330
  Type: function definition analyzed
  Visibility: no_reorder public weak comdat
comdat_group:_ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NKUlvE_cvS4_Ev one_only
artificial
  next sharing asm name: 6
  References: _ZZN13SortAlgorithm4testIiEEvPT_PFbvEEd_NUlvE_4_FUNEv/1 (addr)
__gxx_personality_v0/8 (addr) 
  Referring: 
  Function flags: body
  Called by: main/3 
  Calls: 
pr103937.C:13:1: internal compiler error: symtab_node::verify failed
0x7ffff7a545bf __libc_start_call_main
        ../sysdeps/nptl/libc_start_call_main.h:58
0x7ffff7a5467b __libc_start_main_impl
        ../csu/libc-start.c:409
Please submit a full bug report,

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

* [Bug c++/103937] [11/12 Regression] Assembler error: symbol is already defined when compiling static member function templates since r11-7965-g23be03a0f243a084
  2022-01-07  8:44 [Bug c++/103937] New: Assembler error: symbol is already defined when compiling static member function templates mac.zyg2 at protonmail dot com
  2022-01-07  8:44 ` [Bug c++/103937] " mac.zyg2 at protonmail dot com
  2022-01-07  8:47 ` [Bug c++/103937] [11/12 Regression] Assembler error: symbol is already defined when compiling static member function templates since r11-7965-g23be03a0f243a084 marxin at gcc dot gnu.org
@ 2022-01-07  8:49 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-01-07  8:49 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |DUPLICATE
             Status|NEW                         |RESOLVED

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Dup of bug 103186.

*** This bug has been marked as a duplicate of bug 103186 ***

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

end of thread, other threads:[~2022-01-07  8:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-07  8:44 [Bug c++/103937] New: Assembler error: symbol is already defined when compiling static member function templates mac.zyg2 at protonmail dot com
2022-01-07  8:44 ` [Bug c++/103937] " mac.zyg2 at protonmail dot com
2022-01-07  8:47 ` [Bug c++/103937] [11/12 Regression] Assembler error: symbol is already defined when compiling static member function templates since r11-7965-g23be03a0f243a084 marxin at gcc dot gnu.org
2022-01-07  8:49 ` pinskia 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).