driver: Also prune joined switches with negation
authorH.J. Lu <hongjiu.lu@intel.com>
Sat, 23 Feb 2019 19:39:35 +0000 (19:39 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Sat, 23 Feb 2019 19:39:35 +0000 (11:39 -0800)
commitaebe10d48ccc217273ee8a4e2c3805ed1e173a78
tree8adfb00f7eaa823c09b2fa514cf58c21740af52b
parent85627e2a9e9808c49da92b943a3c8e22106bf9aa
driver: Also prune joined switches with negation

When -march=native is passed to host_detect_local_cpu to the backend,
it overrides all command lines after it.  That means

$ gcc -march=native -march=skylake-avx512

is the treated as

$ gcc -march=skylake-avx512 -march=native

Prune joined switches with Negative and RejectNegative to allow
-march=skylake-avx512 to override previous -march=native on command-line.

gcc/

PR driver/69471
* opts-common.c (prune_options): Also prune joined switches
with Negative and RejectNegative.
* config/i386/i386.opt (march=): Add Negative(march=).
(mtune=): Add Negative(mtune=).
* doc/options.texi: Document Negative used together with Joined
and RejectNegative.

gcc/testsuite/

PR driver/69471
* gcc.dg/pr69471-1.c: New test.
* gcc.dg/pr69471-2.c: Likewise.
* gcc.target/i386/pr69471-3.c: Likewise.

From-SVN: r269164
gcc/ChangeLog
gcc/config/i386/i386.opt
gcc/doc/options.texi
gcc/opts-common.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr69471-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr69471-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr69471-3.c [new file with mode: 0644]