As discussed in c/69104, the -Winvalid-memory-model option is not documented in the manual. The attached patch rectifies that.
Martin
gcc/ChangeLog: 2016-01-04 Martin Sebor <mse...@redhat.com> * doc/invoke.texi (Warning Options): Document -Winvalid-memory-model. Index: doc/invoke.texi =================================================================== --- doc/invoke.texi (revision 232047) +++ doc/invoke.texi (working copy) @@ -263,7 +263,8 @@ -Wno-int-to-pointer-cast -Wno-invalid-offsetof @gol -Winvalid-pch -Wlarger-than=@var{len} @gol -Wlogical-op -Wlogical-not-parentheses -Wlong-long @gol --Wmain -Wmaybe-uninitialized -Wmemset-transposed-args @gol +-Wmain -Wmaybe-uninitialized -Winvalid-memory-model @gol +-Wmemset-transposed-args @gol -Wmisleading-indentation -Wmissing-braces @gol -Wmissing-field-initializers -Wmissing-include-dirs @gol -Wno-multichar -Wnonnull -Wnormalized=@r{[}none@r{|}id@r{|}nfc@r{|}nfkc@r{]} @gol @@ -4305,6 +4306,26 @@ computations may be deleted by data flow analysis before the warnings are printed. +@item -Winvalid-memory-model +@opindex Winvalid-memory-model +@opindex Wno-invalid-memory-model +Warn for invocations of @ref{__atomic Builtins}, @ref{__sync Builtins}, +and the C11 atomic generic functions with a memory consistency argument +that is either invalid for the operation or outside the range of values +of the @code{memory_order} enumeration. For example, since the +@code{__atomic_store} and @code{__atomic_store_n} built-ins are only +defined for the relaxed, relase, and sequentially consistent memory +orders the following code is diagnosed: + +@smallexample +void store (int *i) +@{ + __atomic_store_n (i, 0, memory_order_consume); +@} +@end smallexample + +@option{-Winvalid-memory-model} is enabled by default. + @item -Wmaybe-uninitialized @opindex Wmaybe-uninitialized @opindex Wno-maybe-uninitialized