diff options
author | Jason Merrill <jason@redhat.com> | 2025-02-16 11:00:36 +0100 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2025-02-17 17:19:25 +0000 |
commit | 720c8f685210af9fc9c31810e224751102f1481e (patch) | |
tree | 8d54d3c7310601b71c1081b6dbb5ddeb39c8882d /gcc/builtins.cc | |
parent | 5954c5a7c23fbdf3afc011d703c9fce15db04cbd (diff) | |
download | gcc-720c8f685210af9fc9c31810e224751102f1481e.zip gcc-720c8f685210af9fc9c31810e224751102f1481e.tar.gz gcc-720c8f685210af9fc9c31810e224751102f1481e.tar.bz2 |
c++: extended temps and statement-exprs [PR118763]
My last patch for 118856 broke the test for 118763 (which my testing didn't
catch, for some reason), because it effectively reverted Jakub's recent fix
(r15-7415) for that bug. It seems we need a new flag to indicate internal
temporaries.
In that patch Jakub wondered if other uses of CLEANUP_EH_ONLY would have the
same issue with jumps out of a statement-expr, and indeed it seems that
maybe_push_temp_cleanup and now set_up_extended_ref_temp have the same
problem. Since maybe_push_temp_cleanup already uses a flag, we can easily
stop setting CLEANUP_EH_ONLY there as well. Since set_up_extended_ref_temp
doesn't, working around this issue there will be more involved.
PR c++/118856
PR c++/118763
gcc/cp/ChangeLog:
* cp-tree.h (TARGET_EXPR_INTERNAL_P): New.
* call.cc (extend_temps_r): Check it instead of CLEANUP_EH_ONLY.
* tree.cc (get_internal_target_expr): Set it instead.
* typeck2.cc (maybe_push_temp_cleanup): Don't set CLEANUP_EH_ONLY.
gcc/testsuite/ChangeLog:
* g++.dg/ext/stmtexpr29.C: New test.
Diffstat (limited to 'gcc/builtins.cc')
0 files changed, 0 insertions, 0 deletions