[Bug c++/109556] internal compiler error: in iterative_hash_template_arg, at cp/pt.cc:1927

2023-04-19 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109556

Patrick Palka  changed:

   What|Removed |Added

 CC||ppalka at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |ppalka at gcc dot 
gnu.org

--- Comment #4 from Patrick Palka  ---
It looks like the satisfaction cache is holding on to a TREE_VEC that's been
ggc_free'd.  It got freed from

pt.cc:try_class_unification#L23897:

  if (TMPL_ARGS_HAVE_MULTIPLE_LEVELS (targs))
for (tree level : tree_vec_range (targs))
  ggc_free (level);
  ggc_free (targs);

Removing these calls to ggc_free fixes the ICE, thus I'm pretty sure this
started with r13-377-g3e948d645bc908.  In hindsight freeing this copy of
'targs' isn't generally safe because the call to unify in try_class_unification
could perform satisfaction which in turn would capture parts of targs into the
satisfaction cache.

[Bug c++/109556] internal compiler error: in iterative_hash_template_arg, at cp/pt.cc:1927

2023-04-19 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109556

--- Comment #3 from Jakub Jelinek  ---
Reproduced, reducing now.

[Bug c++/109556] internal compiler error: in iterative_hash_template_arg, at cp/pt.cc:1927

2023-04-19 Thread fabian.sauter+bz_gcc at apsensing dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109556

--- Comment #2 from Fabian Sauter  
---
Created attachment 54884
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54884=edit
Preprocessed Source

Ah, it failed to upload with: "The file you are trying to attach is 2505
kilobytes (KB) in size. Attachments cannot be more than 1000 KB."

I compressed it!

[Bug c++/109556] internal compiler error: in iterative_hash_template_arg, at cp/pt.cc:1927

2023-04-19 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109556

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek  ---
Preprocessed source stored into /tmp/ccG8HXcN.out file, please attach this to
your bugreport.

^^^