[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