[devel] I: g++ -Werror=return-type by default

Dmitry V. Levin ldv на altlinux.org
Пн Фев 11 03:39:27 MSK 2019


On Sat, Feb 09, 2019 at 09:24:33AM +0000, Girar Builder pender robot wrote:
> http://git.altlinux.org/tasks/archive/done/_215/221014/logs/events.1.3.log
> 
> 2019-Feb-09 08:18:45 :: task #221014 for sisyphus started by ldv:
> #100 build 8.2.1-alt4 from /people/ldv/packages/gcc8.git fetched at 2019-Feb-08 10:31:28
[...]
> 2019-Feb-09 08:39:33 :: gcc8: closes bugs: 36038 36045
[...]
> 2019-Feb-09 09:24:15 :: updated /gears/g/gcc8.git branch `sisyphus'
> 2019-Feb-09 09:24:31 :: gears update OK
> 2019-Feb-09 09:24:31 :: task #221014 for sisyphus DONE

В этой сборке g++ (не gcc, только g++) по умолчанию включено
-Werror=return-type; это было сделано после того, как стало ясно,
что, начиная с версии 8, g++ при включённой оптимизации
в следующих двух случаях генерит код, практически непригодный
для выполнения:
1. no return statement in function returning non-void
2. control reaches end of non-void function

Согласно стандарту C++, компилятор при обработке такого кода праве делать
всё что угодно, и g++ теперь буквально не делает возврата из таких
функций.

Прежние версии g++ вели себя более гуманно, реализуя поведение,
свойственное компиляторам C: программы работали нормально, когда
не использовали возвращаемое значение таких функций.

Таким образом, при использовании g++ >= 8 все такие функции следует
исправить, либо меняя тип возвращаемого значения на void, либо реализуя
возвращение значения во всех случаях.

Я ожидаю, что исправлению подлежат около 80 пакетов, более точно можно
будет сказать по результатам тестовой пересборки.

Подробнее о проблеме см. https://bugzilla.altlinux.org/36038


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : signature.asc
Тип     : application/pgp-signature
Размер  : 801 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20190211/1e9199cb/attachment.bin>


Подробная информация о списке рассылки Devel