public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/107352] New: polymorphic class with destroying delete operator defined causes internal compiler error
@ 2022-10-21 18:40 justus at opentransactions dot org
  2022-10-21 18:41 ` [Bug c++/107352] " justus at opentransactions dot org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: justus at opentransactions dot org @ 2022-10-21 18:40 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 107352
           Summary: polymorphic class with destroying delete operator
                    defined causes internal compiler error
           Product: gcc
           Version: 12.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: justus at opentransactions dot org
  Target Milestone: ---

Created attachment 53746
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53746&action=edit
build errors

Defining a std::destroying_delete_t operator delete for a polymorphic class
causes GCC to fail with "internal compiler error: in build_if_in_charge, at
cp/class.cc:229" 

I've tested with 10.3, 11.3, and 12.2 and all of them have the same issue. The
project both builds and passes tests successfully when compiled with clang and
the problem also goes away if I remove the destroying delete operator and put
the code that was in that function at all the places where it would have been
called.

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

* [Bug c++/107352] polymorphic class with destroying delete operator defined causes internal compiler error
  2022-10-21 18:40 [Bug c++/107352] New: polymorphic class with destroying delete operator defined causes internal compiler error justus at opentransactions dot org
@ 2022-10-21 18:41 ` justus at opentransactions dot org
  2022-10-21 18:41 ` justus at opentransactions dot org
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: justus at opentransactions dot org @ 2022-10-21 18:41 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Justus Ranvier <justus at opentransactions dot org> ---
Created attachment 53747
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53747&action=edit
preprocessed source

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

* [Bug c++/107352] polymorphic class with destroying delete operator defined causes internal compiler error
  2022-10-21 18:40 [Bug c++/107352] New: polymorphic class with destroying delete operator defined causes internal compiler error justus at opentransactions dot org
  2022-10-21 18:41 ` [Bug c++/107352] " justus at opentransactions dot org
@ 2022-10-21 18:41 ` justus at opentransactions dot org
  2022-10-21 19:38 ` pinskia at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: justus at opentransactions dot org @ 2022-10-21 18:41 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Justus Ranvier <justus at opentransactions dot org> ---
Created attachment 53748
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53748&action=edit
another example

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

* [Bug c++/107352] polymorphic class with destroying delete operator defined causes internal compiler error
  2022-10-21 18:40 [Bug c++/107352] New: polymorphic class with destroying delete operator defined causes internal compiler error justus at opentransactions dot org
  2022-10-21 18:41 ` [Bug c++/107352] " justus at opentransactions dot org
  2022-10-21 18:41 ` justus at opentransactions dot org
@ 2022-10-21 19:38 ` pinskia at gcc dot gnu.org
  2022-10-21 19:52 ` justus at opentransactions dot org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-10-21 19:38 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Reducing ...

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

* [Bug c++/107352] polymorphic class with destroying delete operator defined causes internal compiler error
  2022-10-21 18:40 [Bug c++/107352] New: polymorphic class with destroying delete operator defined causes internal compiler error justus at opentransactions dot org
                   ` (2 preceding siblings ...)
  2022-10-21 19:38 ` pinskia at gcc dot gnu.org
@ 2022-10-21 19:52 ` justus at opentransactions dot org
  2022-10-21 23:20 ` pinskia at gcc dot gnu.org
  2022-10-21 23:25 ` pinskia at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: justus at opentransactions dot org @ 2022-10-21 19:52 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Justus Ranvier <justus at opentransactions dot org> ---
This is a commit in the project where the ice manifests:

https://github.com/justusranvier/opentxs/commit/051fccf04492ceccee34062fcb406d1b830b55f6


This is a commit where I confirmed that not using destroying delete is a
successful workaround:

https://github.com/justusranvier/opentxs/commit/4d832a90860e3e63eb6ba5d0a7330126bfed2e6e

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

* [Bug c++/107352] polymorphic class with destroying delete operator defined causes internal compiler error
  2022-10-21 18:40 [Bug c++/107352] New: polymorphic class with destroying delete operator defined causes internal compiler error justus at opentransactions dot org
                   ` (3 preceding siblings ...)
  2022-10-21 19:52 ` justus at opentransactions dot org
@ 2022-10-21 23:20 ` pinskia at gcc dot gnu.org
  2022-10-21 23:25 ` pinskia at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-10-21 23:20 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|                            |12.2.0, 9.1.0
   Last reconfirmed|                            |2022-10-21
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed reduced testcase:
namespace std { struct destroying_delete_t { }; }
struct hh {
        virtual ~hh();
}; 
struct yy  : virtual public hh {
        static void operator delete(yy* ptr, std::destroying_delete_t)
noexcept;
};
class jj : virtual public yy {
        ~jj() override;
};
jj::~jj() = default;

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

* [Bug c++/107352] polymorphic class with destroying delete operator defined causes internal compiler error
  2022-10-21 18:40 [Bug c++/107352] New: polymorphic class with destroying delete operator defined causes internal compiler error justus at opentransactions dot org
                   ` (4 preceding siblings ...)
  2022-10-21 23:20 ` pinskia at gcc dot gnu.org
@ 2022-10-21 23:25 ` pinskia at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-10-21 23:25 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Slightly more reduced:
namespace std { struct destroying_delete_t { }; }
struct hh {
        virtual ~hh();
        static void operator delete(hh* ptr, std::destroying_delete_t)
noexcept;
}; 
class jj : virtual public hh {
        ~jj(){};
};

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

end of thread, other threads:[~2022-10-21 23:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-21 18:40 [Bug c++/107352] New: polymorphic class with destroying delete operator defined causes internal compiler error justus at opentransactions dot org
2022-10-21 18:41 ` [Bug c++/107352] " justus at opentransactions dot org
2022-10-21 18:41 ` justus at opentransactions dot org
2022-10-21 19:38 ` pinskia at gcc dot gnu.org
2022-10-21 19:52 ` justus at opentransactions dot org
2022-10-21 23:20 ` pinskia at gcc dot gnu.org
2022-10-21 23:25 ` 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).