* doc/invoke.texi (Warning Options): Document -Winvalid-memory-model.
authorMartin Sebor <msebor@redhat.com>
Tue, 5 Jan 2016 02:53:10 +0000 (02:53 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Tue, 5 Jan 2016 02:53:10 +0000 (19:53 -0700)
From-SVN: r232070

gcc/ChangeLog
gcc/doc/invoke.texi

index 4e9eb23727b8d29fc74f35cbbc383cbfb9b3eb89..4ec3229be0ef37e9f27802b4ef2475e415cff586 100644 (file)
@@ -1,3 +1,7 @@
+2016-01-04  Martin Sebor  <msebor@redhat.com>
+
+       * doc/invoke.texi (Warning Options): Document -Winvalid-memory-model.
+
 2016-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Add
index 8b3d006d83a8e24c6668365720f46666ee4bce64..1d1fd875f71112371f12ab1dfe283fafb5a4314b 100644 (file)
@@ -260,7 +260,7 @@ Objective-C and Objective-C++ Dialects}.
 -Wignored-qualifiers  -Wincompatible-pointer-types @gol
 -Wimplicit  -Wimplicit-function-declaration  -Wimplicit-int @gol
 -Winit-self  -Winline  -Wno-int-conversion @gol
--Wno-int-to-pointer-cast -Wno-invalid-offsetof @gol
+-Wno-int-to-pointer-cast -Winvalid-memory-model -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
@@ -4305,6 +4305,26 @@ to compute a value that itself is never used, because such
 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, release, 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