aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2004-06-28 16:10:55 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2004-06-28 16:10:55 +0000
commit086e309519693c5f3f4c86224e44d03755c2bcf6 (patch)
tree623394af53f572eb2919135f8e2d76eccdb1c8f2 /gcc/tree.c
parent00a5aa9c30c9eeb2cfb3b691b88dbee1fbbe5a4b (diff)
downloadgcc-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.c121
1 files changed, 63 insertions, 58 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index e0a1c46..ba95e15 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -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. */