From 12b195d93665f8aa23b04ac6d8d0d17e93653e07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Thu, 21 May 1998 13:20:37 -0600 Subject: Makefile.in (TREE_H): Add tree-check.h. * Makefile.in (TREE_H): Add tree-check.h. (tree-check.h, gencheck): New targets. * gencheck.c: New file. * tree.c (tree_check, tree_class_check): New functions. * tree.h (TREE_CHECK, TREE_CLASS_CHECK): Define. (TYPE_CHECK, DECL_CHECK): Define. Modify all access macros to use generated checking macros. From-SVN: r19934 --- gcc/tree.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'gcc/tree.c') diff --git a/gcc/tree.c b/gcc/tree.c index 04bf8a3..41704ad 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -4923,3 +4923,75 @@ get_set_constructor_bytes (init, buffer, wd_size) } return non_const_bits; } + +#ifdef ENABLE_CHECKING +/* Complain if the tree code does not match the expected one. */ + +tree +tree_check (node, code, file, line, nofatal) + tree node; + enum tree_code code; + char *file; + int line; + int nofatal; +{ + if (TREE_CODE (node) != code) + if (nofatal) + return 0; + else + fatal ("%s:%d: Expect %s, have %s\n", file, line, + tree_code_name[code], tree_code_name[TREE_CODE (node)]); + + return node; +} + +/* Complain if the class of the tree node does not match. */ + +tree +tree_class_check (node, cl, file, line, nofatal) + tree node; + char cl; + char *file; + int line; + int nofatal; +{ + if (TREE_CODE_CLASS (TREE_CODE (node)) != cl) + if (nofatal) + return 0; + else + fatal ("%s:%d: Expect '%c', have '%s'\n", file, line, + cl, tree_code_name[TREE_CODE (node)]); + + return node; +} +/* Complain if the node is not an expression. */ + +tree +expr_check (node, ignored, file, line, nofatal) + tree node; + int ignored; + char *file; + int line; + int nofatal; +{ + switch (TREE_CODE_CLASS (TREE_CODE (node))) + { + case 'r': + case 's': + case 'e': + case '<': + case '1': + case '2': + break; + + default: + if (nofatal) + return 0; + else + fatal ("%s:%d: Expect expression, have '%s'\n", file, line, + tree_code_name[TREE_CODE (node)]); + } + + return node; +} +#endif -- cgit v1.1