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