https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109806
--- Comment #15 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
That ICE is because layout_class_type calls c_build_bitfield_integer_type with
width of 0 and that type is then seen by ranger for some reason:
#7 0x0000000000c4eee1 in layout_class_type (t=<record_type 0x7fffea2ee348
timespec>, virtuals_p=0x7fffffffd4c8)
at ../../gcc/cp/class.cc:6858
6853 tree ftype = TREE_TYPE (field);
6854 width = tree_to_uhwi (DECL_SIZE (field));
6855 if (width != TYPE_PRECISION (ftype))
6856 {
6857 TREE_TYPE (field)
6858 = c_build_bitfield_integer_type (width,
6859 TYPE_UNSIGNED
(ftype));
6860 TREE_TYPE (field)
6861 = cp_build_qualified_type (TREE_TYPE (field),
6862 cp_type_quals (ftype));
I think unnamed bitfields are just padding and shouldn't have this called.