diff options
author | Alexander Monakov <amonakov@ispras.ru> | 2022-07-19 18:04:30 +0300 |
---|---|---|
committer | Alexander Monakov <amonakov@ispras.ru> | 2022-07-20 16:12:34 +0300 |
commit | daa36cfc2fc2538810db071b81d250f4d621f7ea (patch) | |
tree | a78721af7760c9278ccf5993944f08ed0b22ee07 /gcc/fortran | |
parent | 8694390e2b6ae3af3212f1c829e62fb086cf7707 (diff) | |
download | gcc-daa36cfc2fc2538810db071b81d250f4d621f7ea.zip gcc-daa36cfc2fc2538810db071b81d250f4d621f7ea.tar.gz gcc-daa36cfc2fc2538810db071b81d250f4d621f7ea.tar.bz2 |
Avoid registering __builtin_setjmp_receiver label twice [PR101347]
The testcase in the PR demonstrates how it is possible for one
__builtin_setjmp_receiver label to appear in
nonlocal_goto_handler_labels list twice (after the block with
__builtin_setjmp_setup referring to it was duplicated).
remove_node_from_insn_list did not account for this possibility and
removed only the first copy from the list. Add an assert verifying that
duplicates are not present.
To avoid adding a label to the list twice, move registration of the
label from __builtin_setjmp_setup handling to __builtin_setjmp_receiver.
gcc/ChangeLog:
PR rtl-optimization/101347
* builtins.cc (expand_builtin) [BUILT_IN_SETJMP_SETUP]: Move
population of nonlocal_goto_handler_labels from here ...
(expand_builtin) [BUILT_IN_SETJMP_RECEIVER]: ... to here.
* rtlanal.cc (remove_node_from_insn_list): Verify that a
duplicate is not present in the remainder of the list.
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions