diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2004-06-28 16:10:55 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2004-06-28 16:10:55 +0000 |
commit | 086e309519693c5f3f4c86224e44d03755c2bcf6 (patch) | |
tree | 623394af53f572eb2919135f8e2d76eccdb1c8f2 /gcc/tree.c | |
parent | 00a5aa9c30c9eeb2cfb3b691b88dbee1fbbe5a4b (diff) | |
download | gcc-086e309519693c5f3f4c86224e44d03755c2bcf6.zip gcc-086e309519693c5f3f4c86224e44d03755c2bcf6.tar.gz gcc-086e309519693c5f3f4c86224e44d03755c2bcf6.tar.bz2 |
cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK, [...]): Use appropriate TREE_CHECK macro.:qOR_FUNCTION_DECL_CHECK,
* cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate
TREE_CHECK macro.:qOR_FUNCTION_DECL_CHECK,
* tree.h (tree_check_failed): Make varadic.
(tree_not_check_failed): New prototype.
(tree_check2_failed, tree_check3_failed,
tree_check4_failed, tree_check5_failed): Remove.
(TREE_CHECK, TREE_CHECK2, TREE_CHECK3, TREE_CHECK4,
TREE_CHECK5): Adjust.
(TREE_NOT_CHECK, TREE_NOT_CHECK2, TREE_NOT_CHECK3, TREE_NOT_CHECK4,
TREE_NOT_CHECK5): New.
(TREE_VEC_ELT_CHECK, PHI_NODE_ELT_CHECK, TREE_OPERAND_CHECK_CODE,
TREE_RTL_OPERAND_CHECK): Adjust.
* tree.c (tree_check_failed): Make varadic.
(tree_not_check_failed): New.
(tree_check2_failed, tree_check3_failed,
tree_check4_failed, tree_check5_failed): Remove.
cp:
* cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate
TREE_CHECK macro.
From-SVN: r83796
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 121 |
1 files changed, 63 insertions, 58 deletions
@@ -5108,75 +5108,80 @@ get_set_constructor_bytes (tree init, unsigned char *buffer, int wd_size) #if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007) -/* Complain that the tree code of NODE does not match the expected CODE. - FILE, LINE, and FUNCTION are of the caller. */ +/* Complain that the tree code of NODE does not match the expected 0 + terminated list of trailing codes. FILE, LINE, and FUNCTION are of + the caller. */ void -tree_check_failed (const tree node, enum tree_code code, const char *file, - int line, const char *function) -{ +tree_check_failed (const tree node, const char *file, + int line, const char *function, ...) +{ + va_list args; + char *buffer; + unsigned length = 0; + int code; + + va_start (args, function); + while ((code = va_arg (args, int))) + length += 4 + strlen (tree_code_name[code]); + va_end (args); + va_start (args, function); + buffer = alloca (length); + length = 0; + while ((code = va_arg (args, int))) + { + if (length) + { + strcpy (buffer + length, " or "); + length += 4; + } + strcpy (buffer + length, tree_code_name[code]); + length += strlen (tree_code_name[code]); + } + va_end (args); + internal_error ("tree check: expected %s, have %s in %s, at %s:%d", - tree_code_name[code], tree_code_name[TREE_CODE (node)], - function, trim_filename (file), line); -} - -/* Similar to above except that we allowed the code to be one of two - different codes. */ - -void -tree_check2_failed (const tree node, enum tree_code code1, - enum tree_code code2, const char *file, - int line, const char *function) -{ - internal_error ("tree check: expected %s or %s, have %s in %s, at %s:%d", - tree_code_name[code1], tree_code_name[code2], - tree_code_name[TREE_CODE (node)], + buffer, tree_code_name[TREE_CODE (node)], function, trim_filename (file), line); } -/* Likewise for three different codes. */ +/* Complain that the tree code of NODE does match the expected 0 + terminated list of trailing codes. FILE, LINE, and FUNCTION are of + the caller. */ void -tree_check3_failed (const tree node, enum tree_code code1, - enum tree_code code2, enum tree_code code3, - const char *file, int line, const char *function) -{ - internal_error ("tree check: expected %s, %s or %s; have %s in %s, at %s:%d", - tree_code_name[code1], tree_code_name[code2], - tree_code_name[code3], tree_code_name[TREE_CODE (node)], +tree_not_check_failed (const tree node, const char *file, + int line, const char *function, ...) +{ + va_list args; + char *buffer; + unsigned length = 0; + int code; + + va_start (args, function); + while ((code = va_arg (args, int))) + length += 4 + strlen (tree_code_name[code]); + va_end (args); + va_start (args, function); + buffer = alloca (length); + length = 0; + while ((code = va_arg (args, int))) + { + if (length) + { + strcpy (buffer + length, " or "); + length += 4; + } + strcpy (buffer + length, tree_code_name[code]); + length += strlen (tree_code_name[code]); + } + va_end (args); + + internal_error ("tree check: expected none of %s, have %s in %s, at %s:%d", + buffer, tree_code_name[TREE_CODE (node)], function, trim_filename (file), line); } -/* ... and for four different codes. */ - -void -tree_check4_failed (const tree node, enum tree_code code1, - enum tree_code code2, enum tree_code code3, - enum tree_code code4, const char *file, int line, - const char *function) -{ - internal_error - ("tree check: expected %s, %s, %s or %s; have %s in %s, at %s:%d", - tree_code_name[code1], tree_code_name[code2], tree_code_name[code3], - tree_code_name[code4], tree_code_name[TREE_CODE (node)], function, - trim_filename (file), line); -} - -/* ... and for five different codes. */ - -void -tree_check5_failed (const tree node, enum tree_code code1, - enum tree_code code2, enum tree_code code3, - enum tree_code code4, enum tree_code code5, - const char *file, int line, const char *function) -{ - internal_error - ("tree check: expected %s, %s, %s, %s or %s; have %s in %s, at %s:%d", - tree_code_name[code1], tree_code_name[code2], tree_code_name[code3], - tree_code_name[code4], tree_code_name[code5], - tree_code_name[TREE_CODE (node)], function, trim_filename (file), line); -} - /* Similar to tree_check_failed, except that we check for a class of tree code, given in CL. */ |