Играюсь с valgrind. Обнаружил интересную штуку: если собрать GNU make при помощи clang, в нём вылезает куча ошибок Conditional jump or move depends on uninitialised value(s). Пример можно посмотреть тут: https://travis-ci.org/mikhirev/make_pcre/jobs/62932882
Если make собран с помощью gcc, такого не происходит. Количество ошибок зависит от флагов оптимизации, с которыми собран make: c -O2 имеем:
Shell
==17270== ERROR SUMMARY: 20591 errors from 37 contexts (suppressed: 0 from 0)
С -O1:
Shell
==17651== ERROR SUMMARY: 30193 errors from 45 contexts (suppressed: 0 from 0)
причём возникают они при обработке других частей мейкфайла (точнее, сообщения о них вклиниваются в другие места нормального вывода make).
Если make собрать с -O0, то ошибок нет. Правильно ли я понимаю, что это однозначно указывает на баг clang? Или это у valgrind паранойя? Ведь результат выполнения make полностью корректный.