aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2019-12-16 18:25:08 -0500
committerJason Merrill <jason@gcc.gnu.org>2019-12-16 18:25:08 -0500
commit4953b790255db56883969fde37ad9fc82d2d6772 (patch)
treec36979996f15c5fa2930bd6794a20373891e674d /gcc/tree-vect-loop.c
parent126036359a27ee32a433d0404d88557bb0d15687 (diff)
downloadgcc-4953b790255db56883969fde37ad9fc82d2d6772.zip
gcc-4953b790255db56883969fde37ad9fc82d2d6772.tar.gz
gcc-4953b790255db56883969fde37ad9fc82d2d6772.tar.bz2
PR c++/91165 - verify_gimple ICE with cached constexpr.
It seems we need to unshare even non-CONSTRUCTOR expressions that we are going to stick in the constexpr_call_table, so we don't end up sharing the same e.g. ADDR_EXPR between two different functions. I now think I understand why unsharing CONSTRUCTOR arguments was improving memory performance: separating the arguments from the caller function allows the caller function to be GC'd better. But it occurs to me that we don't need to unshare until we decide that we're evaluating and caching this call, so we can avoid the CONSTRUCTOR unshare/free pair for tentative arguments. Freeing the tentative TREE_VEC still seems worth doing, so free_bindings isn't going away entirely. * constexpr.c (cxx_bind_parameters_in_call): Don't unshare. (cxx_eval_call_expression): Unshare all args if we're caching. From-SVN: r279447
Diffstat (limited to 'gcc/tree-vect-loop.c')
0 files changed, 0 insertions, 0 deletions