diff options
author | Ian Lance Taylor <ian@airs.com> | 2006-01-14 08:15:59 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2006-01-14 08:15:59 +0000 |
commit | dd5827cb6ffcd1991ac139a1df62ccf4421a3aef (patch) | |
tree | 17c9dc2ef96d5fc56b7b2b3d989e5a93eeaa38b7 | |
parent | ce99549f58527066c820d5a8c26983a2db9ee925 (diff) | |
download | gcc-dd5827cb6ffcd1991ac139a1df62ccf4421a3aef.zip gcc-dd5827cb6ffcd1991ac139a1df62ccf4421a3aef.tar.gz gcc-dd5827cb6ffcd1991ac139a1df62ccf4421a3aef.tar.bz2 |
tree.c (tree_not_class_check_failed): New function.
* tree.c (tree_not_class_check_failed): New function.
* tree.h (NON_TYPE_CHECK): Call tree_not_class_check_failed.
(tree_not_class_check_failed): Declare.
From-SVN: r109699
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree.c | 15 | ||||
-rw-r--r-- | gcc/tree.h | 8 |
3 files changed, 27 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 57c19b9..0e8ee82 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-01-14 Ian Lance Taylor <ian@airs.com> + + * tree.c (tree_not_class_check_failed): New function. + * tree.h (NON_TYPE_CHECK): Call tree_not_class_check_failed. + (tree_not_class_check_failed): Declare. + 2006-01-13 Ian Lance Taylor <ian@airs.com> * reload1.c (do_output_reload): Add assertion rejecting a @@ -6012,6 +6012,21 @@ tree_class_check_failed (const tree node, const enum tree_code_class cl, TREE_CODE_CLASS_STRING (TREE_CODE_CLASS (TREE_CODE (node))), tree_code_name[TREE_CODE (node)], function, trim_filename (file), line); } + +/* Similar to tree_check_failed, except that we check that a tree does + not have the specified code, given in CL. */ + +void +tree_not_class_check_failed (const tree node, const enum tree_code_class cl, + const char *file, int line, const char *function) +{ + internal_error + ("tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d", + TREE_CODE_CLASS_STRING (cl), + TREE_CODE_CLASS_STRING (TREE_CODE_CLASS (TREE_CODE (node))), + tree_code_name[TREE_CODE (node)], function, trim_filename (file), line); +} + #undef DEFTREESTRUCT #define DEFTREESTRUCT(VAL, NAME) NAME, @@ -592,8 +592,8 @@ enum tree_node_structure_enum { #define NON_TYPE_CHECK(T) __extension__ \ ({ const tree __t = (T); \ if (TYPE_P (__t)) \ - tree_class_check_failed (__t, tcc_type, __FILE__, __LINE__, \ - __FUNCTION__); \ + tree_not_class_check_failed (__t, tcc_type, __FILE__, __LINE__, \ + __FUNCTION__); \ __t; }) #define TREE_VEC_ELT_CHECK(T, I) __extension__ \ @@ -660,6 +660,10 @@ extern void tree_not_check_failed (const tree, const char *, int, const char *, extern void tree_class_check_failed (const tree, const enum tree_code_class, const char *, int, const char *) ATTRIBUTE_NORETURN; +extern void tree_not_class_check_failed (const tree, + const enum tree_code_class, + const char *, int, const char *) + ATTRIBUTE_NORETURN; extern void tree_vec_elt_check_failed (int, int, const char *, int, const char *) ATTRIBUTE_NORETURN; |