aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorAlexander Monakov <amonakov@ispras.ru>2022-07-19 18:04:30 +0300
committerAlexander Monakov <amonakov@ispras.ru>2022-07-20 16:12:34 +0300
commitdaa36cfc2fc2538810db071b81d250f4d621f7ea (patch)
treea78721af7760c9278ccf5993944f08ed0b22ee07 /gcc/fortran
parent8694390e2b6ae3af3212f1c829e62fb086cf7707 (diff)
downloadgcc-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