Предупреждение g ++: никогда не будет выполнено

Унаследовал проект C ++. Я собираю RHEL 5.5 с gcc 4.1.2 через make-файл. Проект огромный (сотни файлов) и в целом код неплохой. Однако время от времени во время компиляции я получаю предупреждение GCC, в котором говорится:

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/allocator.h: In constructor ‘std::allocator<_Alloc>::allocator() [with _Tp = char]’:
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/allocator.h:97: warning: will never be executed
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/allocator.h:97: warning: will never be executed
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h: In constructor ‘__gnu_cxx::new_allocator<_Tp>::new_allocator() [with _Tp = char]’:
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h:65: warning: will never be executed
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/allocator.h: In destructor ‘std::allocator<_Alloc>::~allocator() [with _Tp = char]’:
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/allocator.h:105: warning: will never be executed
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h: In destructor ‘__gnu_cxx::new_allocator<_Tp>::~new_allocator() [with _Tp = char]’:
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h:72: warning: will never be executed
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/allocator.h: In copy constructor ‘std::allocator<_Alloc>::allocator(const std::allocator<_Alloc>&) [with _Tp = char]’:
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/allocator.h:100: warning: will never be executed
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/allocator.h:99: warning: will never be executed
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h: In copy constructor ‘__gnu_cxx::new_allocator<_Tp>::new_allocator(const __gnu_cxx::new_allocator<_Tp>&) [with _Tp = char]’:
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h:67: warning: will never be executed
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/allocator.h: In destructor ‘std::allocator<_Alloc>::~allocator() [with _Tp = char]’:
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/allocator.h:105: warning: will never be executed

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


person LeviX    schedule 29.01.2013    source источник
comment
Не по теме: предупреждение о поиске в Google: никогда не будет выполнено __gnu_cxx :: new_allocator вернул эту страницу как второй результат. Взрыв головы   -  person Bribles    schedule 30.01.2013
comment
@Bribles, и первый результат возвращает ошибку gcc, указывающую, что -Wunreachable -code не работает и был удален из GCC 4.5 .. Рекомендуется удалить этот параметр предупреждения из CXXFLAGS.   -  person harpun    schedule 30.01.2013
comment
@harpun Твой гугл-фу силен! На самом деле я не сложил два и два и понял, что ошибка была результатом опции CXXFLAG.   -  person LeviX    schedule 30.01.2013


Ответы (2)


Согласно ошибке gcc 46158 на http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46158, -Wunreachable-code всегда был сломан и был удален с gcc-4.5. Очень вероятно, что ваша проблема на самом деле не проблема. (Лично я бы все равно подумал о более новом gcc / g ++, если нет особых причин использовать 4.1.2 - ему почти 6 лет.)

person us2012    schedule 29.01.2013
comment
Обновление gcc есть в списке. Я подумал, что установка среды проекта с известной рабочей конфигурацией была хорошим первым шагом. Мне будет любопытно посмотреть, с какими еще интересными проблемами я столкнусь при обновлении gcc. - person LeviX; 30.01.2013

Этот отчет об ошибке http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46158 говорит внизу

-Wunreachable-code не работает и был удален из GCC 4.5. Не используйте это.

так что игнорирование предупреждений не кажется плохой идеей.

person Bribles    schedule 29.01.2013