aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2021-07-21 17:19:31 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2021-07-21 17:19:31 -0400
commitdcdf6bb24e5f113f2bb9298588105a071bddf50f (patch)
tree82e821fcfe846c06535eaca5d2dfaa1062219fde /gcc
parente279e32243ca2989a46fc933764286f07fc933ef (diff)
downloadgcc-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.cc39
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
{