public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/113541] New: Rejects __attribute__((section)) on explicit instantiation declaration of ctor/dtor
@ 2024-01-22 15:21 arthur.j.odwyer at gmail dot com
  2024-01-22 20:16 ` [Bug c++/113541] " mpolacek at gcc dot gnu.org
  2024-01-23  7:46 ` rguenth at gcc dot gnu.org
  0 siblings, 2 replies; 3+ messages in thread
From: arthur.j.odwyer at gmail dot com @ 2024-01-22 15:21 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 113541
           Summary: Rejects __attribute__((section)) on explicit
                    instantiation declaration of ctor/dtor
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: arthur.j.odwyer at gmail dot com
  Target Milestone: ---

// https://godbolt.org/z/34Wdj1ox8

template<class T>
struct S {
    S(int) {}
    void operator=(int) {}
    void f(int) {}
    ~S() {}
};
template __attribute__((section("TEST"))) S<int>::S(int); // error
template __attribute__((section("TEST"))) void S<int>::f(int); // OK
template __attribute__((section("TEST"))) void S<int>::operator=(int); // OK
template __attribute__((section("TEST"))) S<int>::~S(); // error

===

<source>: In instantiation of 'S<T>::S(int) [with T = int]':
<source>:9:56:   required from here
<source>:3:5: error: section of alias 'S<T>::S(int) [with T = int]' must match
section of its target
    3 |     S(int) {}
      |     ^

The problem seems to be only with the constructor and destructor, i.e., the two
kinds of functions that codegen two object-code definitions (base object xtor
and complete object xtor) for a single C++ declaration.

Somehow, giving `S` a virtual base class (`struct S : virtual B`) fixes the
problem. Then both codegenned xtors correctly wind up in the "TEST" section.

GCC 4.9.4 is happy with the code as written. The bug started happening with GCC
5.

(This was noted on Slack in June 2019, but never reported on Bugzilla AFAICT
until now: https://cpplang.slack.com/archives/C5GN4SP41/p1560800562026000 )

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

* [Bug c++/113541] Rejects __attribute__((section)) on explicit instantiation declaration of ctor/dtor
  2024-01-22 15:21 [Bug c++/113541] New: Rejects __attribute__((section)) on explicit instantiation declaration of ctor/dtor arthur.j.odwyer at gmail dot com
@ 2024-01-22 20:16 ` mpolacek at gcc dot gnu.org
  2024-01-23  7:46 ` rguenth at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2024-01-22 20:16 UTC (permalink / raw)
  To: gcc-bugs

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

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
                 CC|                            |mpolacek at gcc dot gnu.org
   Last reconfirmed|                            |2024-01-22

--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
The error started with r5-1210-ge257a17cb9cc4d.

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

* [Bug c++/113541] Rejects __attribute__((section)) on explicit instantiation declaration of ctor/dtor
  2024-01-22 15:21 [Bug c++/113541] New: Rejects __attribute__((section)) on explicit instantiation declaration of ctor/dtor arthur.j.odwyer at gmail dot com
  2024-01-22 20:16 ` [Bug c++/113541] " mpolacek at gcc dot gnu.org
@ 2024-01-23  7:46 ` rguenth at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: rguenth at gcc dot gnu.org @ 2024-01-23  7:46 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |rejects-valid
            Version|unknown                     |14.0
      Known to work|                            |4.9.4
      Known to fail|                            |5.1.0

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
It sounds like an issue with the C++ mandated aliases.

But I'll note that the template instantiations have to adhere to certain
linkage so I wonder if simply putting them into a different section isn't going
to break the ABI.

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

end of thread, other threads:[~2024-01-23  7:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-22 15:21 [Bug c++/113541] New: Rejects __attribute__((section)) on explicit instantiation declaration of ctor/dtor arthur.j.odwyer at gmail dot com
2024-01-22 20:16 ` [Bug c++/113541] " mpolacek at gcc dot gnu.org
2024-01-23  7:46 ` rguenth 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).