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 <ja...@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