analyzer: fix build with gcc 4.4 (PR 93276)
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 24 Jan 2020 21:31:21 +0000 (21:31 +0000)
committerDavid Malcolm <dmalcolm@redhat.com>
Mon, 27 Jan 2020 14:43:23 +0000 (09:43 -0500)
commit26d949c8c7a757df891ce79162b9bf15087418c6
tree0916fe8fd3b6adc1f3fabde821a2cf7a037608d9
parentfeaa1640b3543c7c3a1f3a788bc449a3638cb780
analyzer: fix build with gcc 4.4 (PR 93276)

This patch fixes various build failures seen with gcc 4.4

gcc prior to 4.6 complains about:

  error: #pragma GCC diagnostic not allowed inside functions

for various uses of PUSH_IGNORE_WFORMAT and POP_IGNORE_WFORMAT.
This patch makes them a no-op with such compilers.

The patch also fixes various errors with template base initializers
and redundant uses of "typename" that older g++ implementations
can't cope with.

gcc/analyzer/ChangeLog:
PR analyzer/93276
* analyzer.h (PUSH_IGNORE_WFORMAT, POP_IGNORE_WFORMAT): Guard these
macros with GCC_VERSION >= 4006, making them no-op otherwise.
* engine.cc (exploded_edge::exploded_edge): Specify template for
base class initializer.
(exploded_graph::add_edge): Specify template when chaining up to
base class add_edge implementation.
(viz_callgraph_node::dump_dot): Drop redundant "typename".
(viz_callgraph_edge::viz_callgraph_edge): Specify template for
base class initializer.
* program-state.cc (sm_state_map::clone_with_remapping): Drop
redundant "typename".
(sm_state_map::print): Likewise.
(sm_state_map::hash): Likewise.
(sm_state_map::operator==): Likewise.
(sm_state_map::remap_svalue_ids): Likewise.
(sm_state_map::on_svalue_purge): Likewise.
(sm_state_map::validate): Likewise.
* program-state.h (sm_state_map::iterator_t): Likewise.
* supergraph.h (superedge::superedge): Specify template for base
class initializer.

gcc/ChangeLog:
PR analyzer/93276
* digraph.cc (test_edge::test_edge): Specify template for base
class initializer.
gcc/ChangeLog
gcc/analyzer/ChangeLog
gcc/analyzer/analyzer.h
gcc/analyzer/engine.cc
gcc/analyzer/program-state.cc
gcc/analyzer/program-state.h
gcc/analyzer/supergraph.h
gcc/digraph.cc