[Bug c++/110159] ICEs for C++ Contracts test cases with '-fno-exceptions'
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jul 16 18:52:06 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110159
--- Comment #1 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Jason Merrill <jason@gcc.gnu.org>:
https://gcc.gnu.org/g:40a990c8b512fd25bd7d7b45aa509e1880d77209
commit r15-2076-g40a990c8b512fd25bd7d7b45aa509e1880d77209
Author: Nina Ranns <dinka.ranns@gmail.com>
Date: Thu Jul 11 17:47:34 2024 +0100
c++/contracts: ICE in C++ Contracts with '-fno-exceptions' [PR 110159]
We currently only initialise terminate_fn if exceptions are enabled.
However, contract handling requires terminate_fn when building the
contract because a contract failure may result in std::terminate call
regardless of whether the exceptions are enabled. Refactored
init_exception_processing to extract the initialisation of
terminate_fn. New function init_terminate_fn added that initialises
terminate_fn if it hasn't already been initialised. Call to terminate_fn
added in cxx_init_decl_processing if contracts are enabled.
PR c++/110159
gcc/cp/ChangeLog:
* cp-tree.h (init_terminate_fn): Declaration of a new function.
* decl.cc (cxx_init_decl_processing): If contracts are enabled,
call init_terminate_fn.
* except.cc (init_exception_processing): Function refactored to
call init_terminate_fn.
(init_terminate_fn): Added new function that initializes
terminate_fn if it hasn't already been initialised.
gcc/testsuite/ChangeLog:
* g++.dg/contracts/pr110159.C: New test.
Signed-off-by: Nina Ranns <dinka.ranns@gmail.com>
More information about the Gcc-bugs
mailing list