[Bug libstdc++/89824] New: Variant jump table reserves space for __variant_cookie twice

antoshkka at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Mar 26 10:17:00 GMT 2019


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

            Bug ID: 89824
           Summary: Variant jump table reserves space for __variant_cookie
                    twice
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: antoshkka at gmail dot com
  Target Milestone: ---

Space for the `__variant_cookie` state is already reserved in _Multi_array
`_Multi_array<_Tp, __rest...> _M_arr[__first + __do_cookie];`.

Additionally reserving it inside the `__gen_vtable` produces jump table with
gaps https://godbolt.org/z/Vx_wEU.


Fix: remove the `+ (is_same_v<_Result_type, __variant_cookie> ? 1 : 0)` from
`__gen_vtable`.


This removes zeros from jump table and slightly reduces the binary size
https://godbolt.org/z/gyo0-j


More information about the Gcc-bugs mailing list