C ++编译器中的不确定性有哪些示例?

时间:2018-10-24 16:50:26

标签: c++ gcc clang deterministic

我正在寻找触发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

编辑:

相关:来自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. 

0 个答案:

没有答案