diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-08 04:51:16 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-08 04:51:16 +0000 |
commit | e94026dabe3924024adfc34b810069417f75c5d1 (patch) | |
tree | cc01394964ac75996779fc8fc5ebdb1781aeb69c /gcc/c-common.h | |
parent | 532166a82e0a78a1e9add8f06eb5f6d8e71bc769 (diff) | |
download | gcc-e94026dabe3924024adfc34b810069417f75c5d1.tar.gz |
* c-typeck.c (type_lists_compatible_p): Use simple_type_promotes_to.
(self_promoting_type_p): Delete.
(self_promoting_args_p): Move ...
* c-common.c: ... here.
(c_common_nodes_and_builtins): Initialize lang_type_promotes_to.
(simple_type_promotes_to): New.
* builtins.c (lang_type_promotes_to): New.
(expand_builtin_va_arg): Use it to give diagnostic for illegal types.
* c-tree.h (C_PROMOTING_INTEGER_TYPE_P): Move ...
* c-common.h: ... here.
(self_promoting_args_p, simple_type_promotes_to): Declare.
* c-decl.c (duplicate_decls): Use simple_type_promotes_to.
(grokdeclarator): Likewise.
* tree.h (lang_type_promotes_to): Declare.
* cp-tree.h (C_PROMOTING_INTEGER_TYPE_P): Delete.
* typeck.c (self_promoting_args_p): Delete.
* gcc.dg/va-arg-1.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29180 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-common.h')
-rw-r--r-- | gcc/c-common.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/c-common.h b/gcc/c-common.h index ab0cdecbd37..7514092b5eb 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -192,3 +192,17 @@ extern void c_common_nodes_and_builtins PROTO((int, int, int)); extern tree build_va_arg PROTO((tree, tree)); extern tree initializer_constant_valid_p PROTO((tree, tree)); + +/* Nonzero if the type T promotes to itself. + ANSI C states explicitly the list of types that promote; + in particular, short promotes to int even if they have the same width. */ +#define C_PROMOTING_INTEGER_TYPE_P(t) \ + (TREE_CODE ((t)) == INTEGER_TYPE \ + && (TYPE_MAIN_VARIANT (t) == char_type_node \ + || TYPE_MAIN_VARIANT (t) == signed_char_type_node \ + || TYPE_MAIN_VARIANT (t) == unsigned_char_type_node \ + || TYPE_MAIN_VARIANT (t) == short_integer_type_node \ + || TYPE_MAIN_VARIANT (t) == short_unsigned_type_node)) + +extern int self_promoting_args_p PROTO((tree)); +extern tree simple_type_promotes_to PROTO((tree)); |