Without RejectNegative one can cause an ICE in the compiler. Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
Ready to be installed? Martin
>From e005f69008daf6ad7705a2f9c3d0242e426c168f Mon Sep 17 00:00:00 2001 From: marxin <mli...@suse.cz> Date: Tue, 27 Dec 2016 15:35:03 +0100 Subject: [PATCH] Add RejectNegative for a c option. gcc/testsuite/ChangeLog: 2016-12-27 Martin Liska <mli...@suse.cz> * g++.dg/pr78933.C: New test. gcc/c-family/ChangeLog: 2016-12-27 Martin Liska <mli...@suse.cz> * c.opt (strong-eval-order): Add RejectNegative keyword. --- gcc/c-family/c.opt | 2 +- gcc/testsuite/g++.dg/pr78933.C | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/pr78933.C diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index a5333a35e41..ba5c39d4f1c 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -1649,7 +1649,7 @@ Follow the C++17 evaluation order requirements for assignment expressions, shift, member function calls, etc. fstrong-eval-order= -C++ ObjC++ Common Var(flag_strong_eval_order) Joined Enum(strong_eval_order) Init(-1) +C++ ObjC++ Common Var(flag_strong_eval_order) Joined Enum(strong_eval_order) RejectNegative Init(-1) Follow the C++17 evaluation order requirements for assignment expressions, shift, member function calls, etc. diff --git a/gcc/testsuite/g++.dg/pr78933.C b/gcc/testsuite/g++.dg/pr78933.C new file mode 100644 index 00000000000..91a3a511711 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr78933.C @@ -0,0 +1,3 @@ +// PR c/78933 +// { dg-do compile } +// { dg-options "-fno-strong-eval-order" } -- 2.11.0