invoke.texi (C Dialect Options): Document it.
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 5 Jan 2017 21:20:16 +0000 (21:20 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 5 Jan 2017 21:20:16 +0000 (21:20 +0000)
        * doc/invoke.texi (C Dialect Options): Document it.
c-family/
        * c.opt (fsso-struct): Add 'native' value.

From-SVN: r244115

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c.opt
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/sso-10.c [new file with mode: 0644]

index 8e51cee930bf77991fa1de3520d8b3138cc99551..1629b96894234db9eaec5ee2234fad0d9dbc2204 100644 (file)
@@ -1,3 +1,7 @@
+2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * doc/invoke.texi (C Dialect Options): Document it.
+
 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/71016
index 7ec36dcbb7d8ffa7cc4fe1524625b23a8cc4ca09..0e1b4dda006e929bbdb823aa3cb38b2aa0354b2c 100644 (file)
@@ -1,3 +1,7 @@
+2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * c.opt (fsso-struct): Add 'native' value.
+
 2017-01-05  Martin Liska  <mliska@suse.cz>
 
        PR pch/78970
index 714ce3a34f0052956dc872095b332d20f1137fc6..0b74aba2f036682ce6dc3ae7f248ff8e8e9b891f 100644 (file)
@@ -1631,7 +1631,7 @@ C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
 
 fsso-struct=
 C ObjC Joined RejectNegative Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
--fsso-struct=[big-endian|little-endian]        Set the default scalar storage order.
+-fsso-struct=[big-endian|little-endian|native] Set the default scalar storage order.
 
 Enum
 Name(sso_struct) Type(enum scalar_storage_order_kind) UnknownError(unrecognized scalar storage order value %qs)
@@ -1642,6 +1642,9 @@ Enum(sso_struct) String(big-endian) Value(SSO_BIG_ENDIAN)
 EnumValue
 Enum(sso_struct) String(little-endian) Value(SSO_LITTLE_ENDIAN)
 
+EnumValue
+Enum(sso_struct) String(native) Value(SSO_NATIVE)
+
 fstats
 C++ ObjC++ Var(flag_detailed_statistics)
 Display statistics accumulated during compilation.
index a6ea4259f522293f9de42f18c216d14eb3c350b1..83ac1353a40bc50cedfad2b3ccc81e79bb4e9d06 100644 (file)
@@ -2166,9 +2166,9 @@ basic integer types such as @code{int} are signed types.
 @item -fsso-struct=@var{endianness}
 @opindex fsso-struct
 Set the default scalar storage order of structures and unions to the
-specified endianness.  The accepted values are @samp{big-endian} and
-@samp{little-endian}.  If the option is not passed, the compiler uses
-the native endianness of the target.  This option is not supported for C++.
+specified endianness.  The accepted values are @samp{big-endian},
+@samp{little-endian} and @samp{native} for the native endianness of
+the target (the default).  This option is not supported for C++.
 
 @strong{Warning:} the @option{-fsso-struct} switch causes GCC to generate
 code that is not binary compatible with code generated without it if the
index e99e399278d9e5c031684383f791c7838625b2ce..08fa8c632b45572c2d042bf02fe870a7877ce5c9 100644 (file)
@@ -1,3 +1,7 @@
+2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc.dg/sso-10.c: New test.
+
 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/71016
diff --git a/gcc/testsuite/gcc.dg/sso-10.c b/gcc/testsuite/gcc.dg/sso-10.c
new file mode 100644 (file)
index 0000000..9dfa297
--- /dev/null
@@ -0,0 +1,27 @@
+/* { dg-do run } */
+/* { dg-options "-fsso-struct=native" } */
+/* { dg-require-effective-target int32plus } */
+
+struct S1
+{
+  int i;
+};
+
+
+struct S1 my_s1 = { 0x12345678 };
+
+unsigned char big_endian_pattern[4] = { 0x12, 0x34, 0x56, 0x78 };
+unsigned char little_endian_pattern[4] = { 0x78, 0x56, 0x34, 0x12 };
+
+int main (void)
+{
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+  if (__builtin_memcmp (&my_s1, &little_endian_pattern, 4) != 0)
+    __builtin_abort ();
+#else
+  if (__builtin_memcmp (&my_s1, &big_endian_pattern, 4) != 0)
+    __builtin_abort ();
+#endif
+
+  return 0;
+}