The fuzzer currently occasionally generates mem_order_consume as a memory order. While having this memory order available may be useful when testing exotic compiler set-ups, in practice it is usually indistinguishable from mem_order_acquire, and causes compiler failures with old versions of GCC that mistakenly disallowed it in places the standard permits it.
This issue tracks the general issue of making it so that this memory order can be blocked from generation. My feeling as to implementation is one of several fixes:
remove memory_order_consume from generation lists entirely (drastic, but straightforward);
add a flag that specifically inhibits generation of memory_order_consume;
add flags for each memory order to disable their generation;
make the distributions for memory_order_consume weighted, and add parameters controlling the weights (most complicated, but most powerful).
The fuzzer currently occasionally generates
mem_order_consume
as a memory order. While having this memory order available may be useful when testing exotic compiler set-ups, in practice it is usually indistinguishable frommem_order_acquire
, and causes compiler failures with old versions of GCC that mistakenly disallowed it in places the standard permits it.This issue tracks the general issue of making it so that this memory order can be blocked from generation. My feeling as to implementation is one of several fixes:
memory_order_consume
from generation lists entirely (drastic, but straightforward);memory_order_consume
;memory_order_consume
weighted, and add parameters controlling the weights (most complicated, but most powerful).