Я ищу примеры кода, который запускает недетерминизм в GCC или в процессе компиляции Clang.
Одним из ярких примеров является использование макроса __DATE__
.
GCC иУ Clang есть множество флагов компилятора, чтобы контролировать результат недетерминированных действий в компиляторе например.-frandom-seed
и -fno-guess-branch-probability
Есть ли небольшие примеры, на которые влияют эти флаги?
Точнее:
$ c++ main.cpp -o main && shasum main
aabbccddee
$ c++ main.cpp -o main && shasum main
eeddccbbaa
Я ищуПримеры кода без макросов, где несколько запусков компилятора приводят к разным выходам, но могут быть исправлены, например, -frandom-seed
EDIT:
related: from gcc документы:
-fno-guess-branch-probability:
Sometimes gcc will opt to use a randomized model to guess branch probabilities,
when none are available from either profiling feedback (-fprofile-arcs)
or __builtin_expect.
This means that different runs of the compiler on the same program
may produce different object code.
The default is -fguess-branch-probability at levels -O, -O2, -O3, -Os.