[PR96230] some -dumpbase-ext fixes
authorAlexandre Oliva <oliva@adacore.com>
Fri, 24 Jul 2020 18:38:38 +0000 (15:38 -0300)
committerAlexandre Oliva <oliva@gnu.org>
Fri, 24 Jul 2020 19:13:39 +0000 (16:13 -0300)
commitc1b9cb1a83b0d6485d9922ecef097d250a22d830
treeb71070491f66be51eaaa51f81480f5cd61dc1114
parent5fa1767aa45e1a927e832ccc09e959d4c8a9548c
[PR96230] some -dumpbase-ext fixes

The initial bug report was that compiling (-c) with -dumpbase ""
-dumpbase-ext .<ext> crashes the driver.

The verification of -dumpbase-ext against -dumpbase doesn't cover the
case in which -dumpbase activates backward-compatibility mode.

I added a test for that, and for -dumpbase-ext without -dumpbase,
trying to make it work in a sensible way, as if applied to the default
-dumpbase for each file.  It turned out that this made for too much
complexity in dealing with suffixes derived from input filenames, so I
gave that up and returned to discarding -dumpbase-ext as documented,
ending up with a change identical to that in the original bug report.

I also thought I caught an off-by-one error in the initial
verification, that caused dumpbase_ext to be discarded if it was
identical to the specified dumpbase, but that turned out to be
intentional as well, so I put in comments and a test to reflect it.

Finally, an earlier version of the newly-added tests used "$var.ext"
in an expected output list, which showed me the handling of string
expansion was incorrect.  Reworked the expr into an eval to make that
work, and, absent any reliance on post-eval adjustments to so-expanded
output names, I arranged for the adjustments to be skipped after eval.

Co-Authored-By: "Zhanghaijian (A)" <z.zhanghaijian@huawei.com>
for  gcc/ChangeLog

PR driver/96230
* gcc.c (process_command): Adjust and document conditions to
reset dumpbase_ext.

for  gcc/testsuite/ChangeLog

PR driver/96230
* gcc.misc-tests/outputs.exp: Add tests with -dumpbase-ext,
with identical -dumpbase, with -dumpbase "", and without any
-dumpbase.
(outest): Fix "" expansion in expected outputs, skip
adjustments.
gcc/gcc.c
gcc/testsuite/gcc.misc-tests/outputs.exp