diff options
author | David Malcolm <dmalcolm@redhat.com> | 2021-07-21 17:19:31 -0400 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2021-07-21 17:19:31 -0400 |
commit | dcdf6bb24e5f113f2bb9298588105a071bddf50f (patch) | |
tree | 82e821fcfe846c06535eaca5d2dfaa1062219fde /gcc | |
parent | e279e32243ca2989a46fc933764286f07fc933ef (diff) | |
download | gcc-dcdf6bb24e5f113f2bb9298588105a071bddf50f.zip gcc-dcdf6bb24e5f113f2bb9298588105a071bddf50f.tar.gz gcc-dcdf6bb24e5f113f2bb9298588105a071bddf50f.tar.bz2 |
analyzer: tweak dumping of min_expr/max_expr
gcc/analyzer/ChangeLog:
* svalue.cc (infix_p): New.
(binop_svalue::dump_to_pp): Use it to print MIN_EXPR and MAX_EXPR
in prefix form, rather than infix.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/analyzer/svalue.cc | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/gcc/analyzer/svalue.cc b/gcc/analyzer/svalue.cc index 094c725..a1e6f50 100644 --- a/gcc/analyzer/svalue.cc +++ b/gcc/analyzer/svalue.cc @@ -1053,6 +1053,21 @@ unaryop_svalue::maybe_fold_bits_within (tree type, /* class binop_svalue : public svalue. */ +/* Return whether OP be printed as an infix operator. */ + +static bool +infix_p (enum tree_code op) +{ + switch (op) + { + default: + return true; + case MAX_EXPR: + case MIN_EXPR: + return false; + } +} + /* Implementation of svalue::dump_to_pp vfunc for binop_svalue. */ void @@ -1060,11 +1075,25 @@ binop_svalue::dump_to_pp (pretty_printer *pp, bool simple) const { if (simple) { - pp_character (pp, '('); - m_arg0->dump_to_pp (pp, simple); - pp_string (pp, op_symbol_code (m_op)); - m_arg1->dump_to_pp (pp, simple); - pp_character (pp, ')'); + if (infix_p (m_op)) + { + /* Print "(A OP B)". */ + pp_character (pp, '('); + m_arg0->dump_to_pp (pp, simple); + pp_string (pp, op_symbol_code (m_op)); + m_arg1->dump_to_pp (pp, simple); + pp_character (pp, ')'); + } + else + { + /* Print "OP(A, B)". */ + pp_string (pp, op_symbol_code (m_op)); + pp_character (pp, '('); + m_arg0->dump_to_pp (pp, simple); + pp_string (pp, ", "); + m_arg1->dump_to_pp (pp, simple); + pp_character (pp, ')'); + } } else { |