https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98343

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:11f07ef37786d10517121fc6226681cd1aa2aea2

commit r11-6252-g11f07ef37786d10517121fc6226681cd1aa2aea2
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Fri Dec 18 10:07:28 2020 +0100

    c++: Fix PCH ICE with __builtin_source_location [PR98343]

    Seems the ggc_remove ppc_nx 3 operand member relies on the hash tables to
    contain pointers in the first element, which is not the case for
    source_location_table* hash table, which has location_t and unsigned as
    first two members and pointer somewhere else.
    I've tried to change:
       static void
       pch_nx (T &p, gt_pointer_operator op, void *cookie)
       {
    -    op (&p, cookie);
    +    extern void gt_pch_nx (T *, gt_pointer_operator, void *);
    +    gt_pch_nx (&p, op, cookie);
       }
    in hash-traits.h, but that failed miserably.
    So, this patch instead overrides the two pch_nx overloads (only the second
    one is needed, the former one is identical to the ggc_remove one) but I
need
    to override both.

    2020-12-18  Jakub Jelinek  <ja...@redhat.com>

            PR c++/98343
            * cp-gimplify.c (source_location_table_entry_hash::pch_nx):
Override
            static member functions from ggc_remove.

            * g++.dg/pch/pr98343.C: New test.
            * g++.dg/pch/pr98343.Hs: New file.

Reply via email to