замена fvtable-gc в GCC

Есть ли замена параметрам fvtable-gc в GCCv4.7.1 (поддерживалась в GCCv3.x)? Я хочу удалить неиспользуемые виртуальные функции в процессе компоновки.

fvtable-gc Выдавать специальные перемещения для виртуальных таблиц и ссылок на виртуальные функции, чтобы компоновщик мог идентифицировать неиспользуемые виртуальные функции и обнулить слоты виртуальных таблиц, которые на них ссылаются. Это наиболее полезно с секциями -ffunction-sections и -Wl,--gc-sections, чтобы отбросить и сами функции.


person qubu    schedule 03.07.2013    source источник


Ответы (1)


Похоже, эта функция была слишком глючной, поэтому ее удалили несколько лет назад. Я не думаю, что есть равноценная замена.

Хотя я не нашел официального заявления, есть несколько комментариев о том, что fvtable-gc не работает, по крайней мере, в серии GCC 3.x, а может быть, и раньше. Например, (source: cris.h; утверждает, что является частью GCC):

... Когда ошибки удалены из -fvtable-gc (-fforce-addr вызывает неверный .vtable_entry asm в tinfo.cc и вообще ничего не работает в GCC 3.0-pre)...

Сегодня, много лет спустя, компиляторы должны быть гораздо более совершенными. Возможно, оптимизатор всей программы GCC достаточно умен, чтобы обнаруживать и устранять неиспользуемые виртуальные функции, но я не уверен.

person Philipp Claßen    schedule 29.01.2014