I've thought for a while that many of the macros in tree.h and such should
become inline functions.  This one in particular was confusing Coverity; the
null check in the macro made it think that all code guarded by
error_operand_p would also need null checks.

Tested x86_64-pc-linux-gnu.  OK for trunk?

---
 gcc/tree.h | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gcc/tree.h b/gcc/tree.h
index 2c8973f34e2..5f27f02df9e 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -4349,9 +4349,12 @@ tree_strip_any_location_wrapper (tree exp)
 
 /* True if NODE is an erroneous expression.  */
 
-#define error_operand_p(NODE)                                  \
-  ((NODE) == error_mark_node                                   \
-   || ((NODE) && TREE_TYPE ((NODE)) == error_mark_node))
+inline bool
+error_operand_p (const_tree t)
+{
+  return (t == error_mark_node
+         || (t && TREE_TYPE (t) == error_mark_node));
+}
 
 /* Return the number of elements encoded directly in a VECTOR_CST.  */
 

base-commit: 483e400870601f650c80f867ec781cd5f83507d6
-- 
2.27.0

Reply via email to