On 8/14/26 4:47 PM, Wang Jinghao wrote:
Bootstrapped/regtested on x86_64-pc-linux-gnu.

-- >8 --

`check_postconditions_in_redecl()' assumes that the parameters in a
function redeclaration correspond one to one with those in the
previous declaration.  This assumption does not hold for parameter
packs.  As a result, if the original declaration contains a parameter
pack and the pack is instantiated with no arguments, a segmentation
fault occurs.

Likewise, when the parameter pack is instantiated with multiple
arguments, type checking is skipped for all instantiated parameters
except the first one.

        PR c++/124395

gcc/cp/ChangeLog:

        * contracts.cc (maybe_propagate_used_in_post_flag): New
        function.  Contains the logic moved from
        check_postconditions_in_redecl for checking parameters in
        redeclarations.
        (check_postconditions_in_redecl): Fix parameter pack handing

gcc/testsuite/ChangeLog:

        * g++.dg/contracts/cpp26/pr124395.C: New test.
And then fold2.C.


Reply via email to