[flang] Dodge bogus uninitialized data warning from gcc 10.1 via code cleanup
authorpeter klausler <pklausler@nvidia.com>
Fri, 12 Jun 2020 17:05:04 +0000 (10:05 -0700)
committerTim Keith <tkeith@nvidia.com>
Fri, 12 Jun 2020 17:05:05 +0000 (10:05 -0700)
commita0226f9bffa4c879ec7f8183738205661978cc39
tree147cf5af9831dcdb8e938f800032e6da48f95eca
parent270d580a0e9ff2f2e1b6240fccedee7c25dc3bfa
[flang] Dodge bogus uninitialized data warning from gcc 10.1 via code cleanup

G++ 10.1 emits inappropriate "use of uninitialized data" warnings when
compiling f18.  The warnings stem from two sites in templatized code
whose multiple instantiations magnified the number of warnings.

These changes dodge those warnings by making some innocuous changes to
the code.  In the parser, the idiom defaulted(cut >> x), which yields a
parser that always succeeds, has been replaced with a new equivalent
pass<T>() parser that returns a default-constructed value T{} in an
arguably more readable fashion.  This idiom was the only attestation of
the basic parser cut, so it has been removed and the remaining code
simplified.  In Evaluate/traverse.h, a return {}; was replaced with a
return of a default-constructed member.

Differential Revision: https://reviews.llvm.org/D81747
flang/documentation/ParserCombinators.md
flang/include/flang/Evaluate/traverse.h
flang/lib/Parser/Fortran-parsers.cpp
flang/lib/Parser/basic-parsers.h
flang/lib/Parser/program-parsers.cpp
flang/lib/Parser/stmt-parser.h
flang/lib/Parser/token-parsers.h