我正在寻找触发GCC或Clang编译过程中的不确定性的代码示例。
一个突出的例子是使用__DATE__宏。
GCC和Clang有大量的编译器标志来控制编译器内的非确定性操作的结果,例如-frandom-seed和-fno-guess-branch-probability。
是否有任何受这些标志影响的小例子?
更准确地说:
我正在寻找没有宏的代码示例,这些示例在多次运行编译器时会导致不同的输出,但可以通过例如
编辑:
相关内容:来自gcc文档。
一个突出的例子是使用__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
进行修复。编辑:
相关内容:来自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.