public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957)
@ 2017-01-02 19:27 Jakub Jelinek
  2017-01-04 11:27 ` Richard Biener
  0 siblings, 1 reply; 10+ messages in thread
From: Jakub Jelinek @ 2017-01-02 19:27 UTC (permalink / raw)
  To: gcc-patches

Hi!

Enum options should not allow negative form, otherwise the option handling
ICEs on it.  -fsso-struct= allows only big-endian or little-endian,
-fno-sso-struct=big-endian or -fno-sso-struct=whatever makes no sense.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2017-01-02  Jakub Jelinek  <jakub@redhat.com>

	PR driver/78957
	* c.opt (fsso-struct=): Add RejectNegative.

	* gcc.dg/pr78957.c: New test.

--- gcc/c-family/c.opt.jj	2016-12-29 13:56:36.000000000 +0100
+++ gcc/c-family/c.opt	2017-01-01 12:10:16.744757723 +0100
@@ -1626,7 +1626,7 @@ fsquangle
 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
 
 fsso-struct=
-C ObjC Joined Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
+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.
 
 Enum
--- gcc/testsuite/gcc.dg/pr78957.c.jj	2017-01-01 12:02:41.859809492 +0100
+++ gcc/testsuite/gcc.dg/pr78957.c	2017-01-01 12:06:05.951094270 +0100
@@ -0,0 +1,6 @@
+/* PR driver/78957 */
+/* { dg-do compile } */
+/* { dg-options "-fno-sso-struct=none" } */
+/* { dg-error "unrecognized command line option" "" { target *-*-* } 0 } */
+
+int i;

	Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957)
  2017-01-02 19:27 [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957) Jakub Jelinek
@ 2017-01-04 11:27 ` Richard Biener
  2017-01-04 11:40   ` Jakub Jelinek
  0 siblings, 1 reply; 10+ messages in thread
From: Richard Biener @ 2017-01-04 11:27 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: GCC Patches

On Mon, Jan 2, 2017 at 8:27 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> Hi!
>
> Enum options should not allow negative form, otherwise the option handling
> ICEs on it.  -fsso-struct= allows only big-endian or little-endian,
> -fno-sso-struct=big-endian or -fno-sso-struct=whatever makes no sense.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

Ok, but maybe .opt processing can add RejectNegative on its own for
Enum switches then?  For the vectorizer we have (for backward compatibility):

fvect-cost-model
Common RejectNegative Alias(fvect-cost-model=,dynamic)
Enables the dynamic vectorizer cost model.  Preserved for backward
compatibility.

fno-vect-cost-model
Common RejectNegative Alias(fvect-cost-model=,unlimited)
Enables the unlimited vectorizer cost model.  Preserved for backward
compatibility.


Richard.

> 2017-01-02  Jakub Jelinek  <jakub@redhat.com>
>
>         PR driver/78957
>         * c.opt (fsso-struct=): Add RejectNegative.
>
>         * gcc.dg/pr78957.c: New test.
>
> --- gcc/c-family/c.opt.jj       2016-12-29 13:56:36.000000000 +0100
> +++ gcc/c-family/c.opt  2017-01-01 12:10:16.744757723 +0100
> @@ -1626,7 +1626,7 @@ fsquangle
>  C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
>
>  fsso-struct=
> -C ObjC Joined Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
> +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.
>
>  Enum
> --- gcc/testsuite/gcc.dg/pr78957.c.jj   2017-01-01 12:02:41.859809492 +0100
> +++ gcc/testsuite/gcc.dg/pr78957.c      2017-01-01 12:06:05.951094270 +0100
> @@ -0,0 +1,6 @@
> +/* PR driver/78957 */
> +/* { dg-do compile } */
> +/* { dg-options "-fno-sso-struct=none" } */
> +/* { dg-error "unrecognized command line option" "" { target *-*-* } 0 } */
> +
> +int i;
>
>         Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957)
  2017-01-04 11:27 ` Richard Biener
@ 2017-01-04 11:40   ` Jakub Jelinek
  2017-01-04 12:31     ` Richard Biener
  2017-01-05 19:54     ` [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957) Eric Botcazou
  0 siblings, 2 replies; 10+ messages in thread
From: Jakub Jelinek @ 2017-01-04 11:40 UTC (permalink / raw)
  To: Richard Biener, Eric Botcazou; +Cc: GCC Patches

On Wed, Jan 04, 2017 at 12:27:09PM +0100, Richard Biener wrote:
> On Mon, Jan 2, 2017 at 8:27 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> > Enum options should not allow negative form, otherwise the option handling
> > ICEs on it.  -fsso-struct= allows only big-endian or little-endian,
> > -fno-sso-struct=big-endian or -fno-sso-struct=whatever makes no sense.
> >
> > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
> 
> Ok, but maybe .opt processing can add RejectNegative on its own for
> Enum switches then?

Rather than implicit RejectNegative it might be better to just diagnose
such options as invalid.  If you agree, I can implement that as follow-up.
Also note that RejectNegative is only needed on the Enum switches that have
the default negatives (that is [Wfm] prefixed I think).

>  For the vectorizer we have (for backward compatibility):
> 
> fvect-cost-model
> Common RejectNegative Alias(fvect-cost-model=,dynamic)
> Enables the dynamic vectorizer cost model.  Preserved for backward
> compatibility.
> 
> fno-vect-cost-model
> Common RejectNegative Alias(fvect-cost-model=,unlimited)
> Enables the unlimited vectorizer cost model.  Preserved for backward
> compatibility.

That is a non-= non-Enum option though.  And not sure why this actually
is RejectNegative, wouldn't
Common Alias(fvect-cost-model=,dynamic,unlimited)
work just on fvect-cost-model (can test that)?
In this case there is no -fsso-struct option (what would it mean), so
-fno-sso-struct isn't there either (again, what would that mean).
The only thing that would make sense IMHO would be to allow
not just big-endian and little-endian, but also native, so one can
cancel earlier -fsso-struct= like
gcc ... -fsso-struct=little-endian ... -fsso-struct=native ...
and have it act as if neither of those options appeared.
CCing Eric who has added this option.

	Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957)
  2017-01-04 11:40   ` Jakub Jelinek
@ 2017-01-04 12:31     ` Richard Biener
  2017-01-04 21:13       ` [PATCH] Error on Enum option without RejectNegative Jakub Jelinek
  2017-01-04 21:15       ` [PATCH] Improve -f{,no}-vect-cost-model Jakub Jelinek
  2017-01-05 19:54     ` [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957) Eric Botcazou
  1 sibling, 2 replies; 10+ messages in thread
From: Richard Biener @ 2017-01-04 12:31 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Eric Botcazou, GCC Patches

On Wed, Jan 4, 2017 at 12:40 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Wed, Jan 04, 2017 at 12:27:09PM +0100, Richard Biener wrote:
>> On Mon, Jan 2, 2017 at 8:27 PM, Jakub Jelinek <jakub@redhat.com> wrote:
>> > Enum options should not allow negative form, otherwise the option handling
>> > ICEs on it.  -fsso-struct= allows only big-endian or little-endian,
>> > -fno-sso-struct=big-endian or -fno-sso-struct=whatever makes no sense.
>> >
>> > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
>>
>> Ok, but maybe .opt processing can add RejectNegative on its own for
>> Enum switches then?
>
> Rather than implicit RejectNegative it might be better to just diagnose
> such options as invalid.  If you agree, I can implement that as follow-up.
> Also note that RejectNegative is only needed on the Enum switches that have
> the default negatives (that is [Wfm] prefixed I think).

That would be nice.

>>  For the vectorizer we have (for backward compatibility):
>>
>> fvect-cost-model
>> Common RejectNegative Alias(fvect-cost-model=,dynamic)
>> Enables the dynamic vectorizer cost model.  Preserved for backward
>> compatibility.
>>
>> fno-vect-cost-model
>> Common RejectNegative Alias(fvect-cost-model=,unlimited)
>> Enables the unlimited vectorizer cost model.  Preserved for backward
>> compatibility.
>
> That is a non-= non-Enum option though.

Yes, we do have the Enum variant (with RejectNegative) as well.

>  And not sure why this actually
> is RejectNegative, wouldn't
> Common Alias(fvect-cost-model=,dynamic,unlimited)
> work just on fvect-cost-model (can test that)?

Good question ;)  If it works, ok.

> In this case there is no -fsso-struct option (what would it mean), so
> -fno-sso-struct isn't there either (again, what would that mean).
> The only thing that would make sense IMHO would be to allow
> not just big-endian and little-endian, but also native, so one can
> cancel earlier -fsso-struct= like
> gcc ... -fsso-struct=little-endian ... -fsso-struct=native ...
> and have it act as if neither of those options appeared.
> CCing Eric who has added this option.

Yeah, I agree for -fsso-struct it doesn't make sense to have a -fno-sso-struct.

For the vectorizer we transitioned from -f[no-]vect-cost-model to a
tristate using an Enum and keeping the old form working was requied.

Richard.

>
>         Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] Error on Enum option without RejectNegative
  2017-01-04 12:31     ` Richard Biener
@ 2017-01-04 21:13       ` Jakub Jelinek
  2017-01-04 21:18         ` Joseph Myers
  2017-01-04 21:15       ` [PATCH] Improve -f{,no}-vect-cost-model Jakub Jelinek
  1 sibling, 1 reply; 10+ messages in thread
From: Jakub Jelinek @ 2017-01-04 21:13 UTC (permalink / raw)
  To: Richard Biener; +Cc: Eric Botcazou, GCC Patches

On Wed, Jan 04, 2017 at 01:31:28PM +0100, Richard Biener wrote:
> > Rather than implicit RejectNegative it might be better to just diagnose
> > such options as invalid.  If you agree, I can implement that as follow-up.
> > Also note that RejectNegative is only needed on the Enum switches that have
> > the default negatives (that is [Wfm] prefixed I think).
> 
> That would be nice.

This works (and r244071 fails to build with it, r244072 succeeds).
The error is emitted above the option, so it is not hard to find out what
option it is (and it is similar to other similar errors diagnosed by
optc-gen.awk).
Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2017-01-04  Jakub Jelinek  <jakub@redhat.com>

	* optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without
	RejectNegative.

--- gcc/optc-gen.awk.jj	2017-01-01 12:45:39.000000000 +0100
+++ gcc/optc-gen.awk	2017-01-04 18:24:58.926573992 +0100
@@ -326,6 +326,11 @@ for (i = 0; i < n_opts; i++) {
 			alias_data = "NULL, NULL, OPT_SPECIAL_ignore"
 		else
 			alias_data = "NULL, NULL, N_OPTS"
+		if (flag_set_p("Enum.*", flags[i])) {
+			if (!flag_set_p("RejectNegative", flags[i]) \
+			    && opts[i] ~ "^[Wfm]")
+				print "#error Enum allowing negative form"
+		}
 	} else {
 		alias_opt = nth_arg(0, alias_arg)
 		alias_posarg = nth_arg(1, alias_arg)


	Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] Improve -f{,no}-vect-cost-model
  2017-01-04 12:31     ` Richard Biener
  2017-01-04 21:13       ` [PATCH] Error on Enum option without RejectNegative Jakub Jelinek
@ 2017-01-04 21:15       ` Jakub Jelinek
  2017-01-05 12:08         ` Richard Biener
  1 sibling, 1 reply; 10+ messages in thread
From: Jakub Jelinek @ 2017-01-04 21:15 UTC (permalink / raw)
  To: Richard Biener; +Cc: Eric Botcazou, GCC Patches

On Wed, Jan 04, 2017 at 01:31:28PM +0100, Richard Biener wrote:
> >  And not sure why this actually
> > is RejectNegative, wouldn't
> > Common Alias(fvect-cost-model=,dynamic,unlimited)
> > work just on fvect-cost-model (can test that)?
> 
> Good question ;)  If it works, ok.

And here is a patch for that, in addition to bootstrap/regtests I've
tried in the debugger the effect of both -fvect-cost-model and
-fno-vect-cost-model and they set global_options.x_flag_vect_cost_model
to the expected enum values in each case.

Ok for trunk?

2017-01-04  Jakub Jelinek  <jakub@redhat.com>

	* common.opt (fvect-cost-model): Remove RejectNegative flag, use
	3 argument Alias with unlimited for the negative form.
	(fno-vect-cost-model): Removed.

--- gcc/common.opt.jj	2017-01-01 12:45:37.000000000 +0100
+++ gcc/common.opt	2017-01-04 18:30:32.239318711 +0100
@@ -2706,13 +2706,9 @@ EnumValue
 Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
 
 fvect-cost-model
-Common RejectNegative Alias(fvect-cost-model=,dynamic)
+Common Alias(fvect-cost-model=,dynamic,unlimited)
 Enables the dynamic vectorizer cost model.  Preserved for backward compatibility.
 
-fno-vect-cost-model
-Common RejectNegative Alias(fvect-cost-model=,unlimited)
-Enables the unlimited vectorizer cost model.  Preserved for backward compatibility.
-
 ftree-vect-loop-version
 Common Ignore
 Does nothing. Preserved for backward compatibility.


	Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Error on Enum option without RejectNegative
  2017-01-04 21:13       ` [PATCH] Error on Enum option without RejectNegative Jakub Jelinek
@ 2017-01-04 21:18         ` Joseph Myers
  0 siblings, 0 replies; 10+ messages in thread
From: Joseph Myers @ 2017-01-04 21:18 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Richard Biener, Eric Botcazou, GCC Patches

On Wed, 4 Jan 2017, Jakub Jelinek wrote:

> On Wed, Jan 04, 2017 at 01:31:28PM +0100, Richard Biener wrote:
> > > Rather than implicit RejectNegative it might be better to just diagnose
> > > such options as invalid.  If you agree, I can implement that as follow-up.
> > > Also note that RejectNegative is only needed on the Enum switches that have
> > > the default negatives (that is [Wfm] prefixed I think).
> > 
> > That would be nice.
> 
> This works (and r244071 fails to build with it, r244072 succeeds).
> The error is emitted above the option, so it is not hard to find out what
> option it is (and it is similar to other similar errors diagnosed by
> optc-gen.awk).
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
> 
> 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
> 
> 	* optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without
> 	RejectNegative.

OK.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Improve -f{,no}-vect-cost-model
  2017-01-04 21:15       ` [PATCH] Improve -f{,no}-vect-cost-model Jakub Jelinek
@ 2017-01-05 12:08         ` Richard Biener
  0 siblings, 0 replies; 10+ messages in thread
From: Richard Biener @ 2017-01-05 12:08 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Eric Botcazou, GCC Patches

On Wed, Jan 4, 2017 at 10:15 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Wed, Jan 04, 2017 at 01:31:28PM +0100, Richard Biener wrote:
>> >  And not sure why this actually
>> > is RejectNegative, wouldn't
>> > Common Alias(fvect-cost-model=,dynamic,unlimited)
>> > work just on fvect-cost-model (can test that)?
>>
>> Good question ;)  If it works, ok.
>
> And here is a patch for that, in addition to bootstrap/regtests I've
> tried in the debugger the effect of both -fvect-cost-model and
> -fno-vect-cost-model and they set global_options.x_flag_vect_cost_model
> to the expected enum values in each case.
>
> Ok for trunk?

Ok.

Richard.

> 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
>
>         * common.opt (fvect-cost-model): Remove RejectNegative flag, use
>         3 argument Alias with unlimited for the negative form.
>         (fno-vect-cost-model): Removed.
>
> --- gcc/common.opt.jj   2017-01-01 12:45:37.000000000 +0100
> +++ gcc/common.opt      2017-01-04 18:30:32.239318711 +0100
> @@ -2706,13 +2706,9 @@ EnumValue
>  Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
>
>  fvect-cost-model
> -Common RejectNegative Alias(fvect-cost-model=,dynamic)
> +Common Alias(fvect-cost-model=,dynamic,unlimited)
>  Enables the dynamic vectorizer cost model.  Preserved for backward compatibility.
>
> -fno-vect-cost-model
> -Common RejectNegative Alias(fvect-cost-model=,unlimited)
> -Enables the unlimited vectorizer cost model.  Preserved for backward compatibility.
> -
>  ftree-vect-loop-version
>  Common Ignore
>  Does nothing. Preserved for backward compatibility.
>
>
>         Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957)
  2017-01-04 11:40   ` Jakub Jelinek
  2017-01-04 12:31     ` Richard Biener
@ 2017-01-05 19:54     ` Eric Botcazou
  2017-01-05 21:09       ` Jakub Jelinek
  1 sibling, 1 reply; 10+ messages in thread
From: Eric Botcazou @ 2017-01-05 19:54 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: gcc-patches, Richard Biener

[-- Attachment #1: Type: text/plain, Size: 854 bytes --]

> In this case there is no -fsso-struct option (what would it mean), so
> -fno-sso-struct isn't there either (again, what would that mean).
> The only thing that would make sense IMHO would be to allow
> not just big-endian and little-endian, but also native, so one can
> cancel earlier -fsso-struct= like
> gcc ... -fsso-struct=little-endian ... -fsso-struct=native ...
> and have it act as if neither of those options appeared.

That makes sense and is immediate since the logic is already based on the 
native endianness of the target.

Tested on x86-64_suse-linux, OK for the mainline?


2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>

	* c-family/c.opt (fsso-struct): Add 'native' value.
	* doc/invoke.texi (C Dialect Options): Document it.


2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc.dg/sso-10.c: New test.


-- 
Eric Botcazou

[-- Attachment #2: p.diff --]
[-- Type: text/x-patch, Size: 1840 bytes --]

Index: c-family/c.opt
===================================================================
--- c-family/c.opt	(revision 244107)
+++ c-family/c.opt	(working copy)
@@ -1631,7 +1631,7 @@ C++ ObjC++ Ignore Warn(switch %qs is no
 
 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) Valu
 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: doc/invoke.texi
===================================================================
--- doc/invoke.texi	(revision 244034)
+++ doc/invoke.texi	(working copy)
@@ -2166,9 +2166,9 @@ basic integer types such as @code{int} a
 @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

[-- Attachment #3: sso-10.c --]
[-- Type: text/x-csrc, Size: 576 bytes --]

/* { 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;
}

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957)
  2017-01-05 19:54     ` [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957) Eric Botcazou
@ 2017-01-05 21:09       ` Jakub Jelinek
  0 siblings, 0 replies; 10+ messages in thread
From: Jakub Jelinek @ 2017-01-05 21:09 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: gcc-patches, Richard Biener

On Thu, Jan 05, 2017 at 08:53:49PM +0100, Eric Botcazou wrote:
> > In this case there is no -fsso-struct option (what would it mean), so
> > -fno-sso-struct isn't there either (again, what would that mean).
> > The only thing that would make sense IMHO would be to allow
> > not just big-endian and little-endian, but also native, so one can
> > cancel earlier -fsso-struct= like
> > gcc ... -fsso-struct=little-endian ... -fsso-struct=native ...
> > and have it act as if neither of those options appeared.
> 
> That makes sense and is immediate since the logic is already based on the 
> native endianness of the target.
> 
> Tested on x86-64_suse-linux, OK for the mainline?
> 
> 
> 2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
> 
> 	* c-family/c.opt (fsso-struct): Add 'native' value.

c-family/ has its own ChangeLog, so just * c.opt (...): ...

> 	* doc/invoke.texi (C Dialect Options): Document it.
> 
> 
> 2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
> 
> 	* gcc.dg/sso-10.c: New test.

Ok, thanks.

	Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-01-05 21:09 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-02 19:27 [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957) Jakub Jelinek
2017-01-04 11:27 ` Richard Biener
2017-01-04 11:40   ` Jakub Jelinek
2017-01-04 12:31     ` Richard Biener
2017-01-04 21:13       ` [PATCH] Error on Enum option without RejectNegative Jakub Jelinek
2017-01-04 21:18         ` Joseph Myers
2017-01-04 21:15       ` [PATCH] Improve -f{,no}-vect-cost-model Jakub Jelinek
2017-01-05 12:08         ` Richard Biener
2017-01-05 19:54     ` [PATCH] Fix ICE with -fno-sso-struct=none (PR driver/78957) Eric Botcazou
2017-01-05 21:09       ` Jakub Jelinek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).