]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++/contracts: ICE in build_contract_condition_function [PR116490]
authorNina Dinka Ranns <dinka.ranns@googlemail.com>
Fri, 30 Aug 2024 12:49:07 +0000 (13:49 +0100)
committerJason Merrill <jason@redhat.com>
Tue, 24 Sep 2024 15:56:13 +0000 (11:56 -0400)
commitae57e52754ca6c96145a1b7504c2c7613a9e54d9
treeea943d22ac2c859848dbfa047be5c6f459fc0ff0
parent4cb20dc043cf70b8a1b4846c86599cc1ff9680d9
c++/contracts: ICE in build_contract_condition_function [PR116490]

We currently do not expect comdat group of the guarded function to
be set at the time of generating pre and post check function.
However, in the case of an explicit instantiation, the guarded
function has been added to a comdat group before generating contract
check functions, which causes the observed ICE. Current assert
removed and an additional check for comdat group of the guarded
function added. With this change, the pre and post check functions
get added to the same comdat group of the guarded function if the
guarded function is already placed in a comdat group.

PR c++/116490

gcc/cp/ChangeLog:

* contracts.cc (build_contract_condition_function): added
a check for comdat group of the guarded function. If set,
the condition check function is added to the same comdat
group.

gcc/testsuite/ChangeLog:

* g++.dg/contracts/pr116490.C: New test.

Signed-off-by: Nina Ranns <dinka.ranns@gmail.com>
gcc/cp/contracts.cc
gcc/testsuite/g++.dg/contracts/pr116490.C [new file with mode: 0644]