diff options
author | Rafael Avila de Espindola <espindola@google.com> | 2007-05-14 14:37:17 +0000 |
---|---|---|
committer | Rafael Espindola <espindola@gcc.gnu.org> | 2007-05-14 14:37:17 +0000 |
commit | ca5ba2a3ea97efc7f23622d759bc3a885a12662b (patch) | |
tree | a28ec44b83ed223ca40fabdb746511c19bbbc130 /gcc/c-common.c | |
parent | a4242737202af64a394f5271c06b8be1979cbcfb (diff) | |
download | gcc-ca5ba2a3ea97efc7f23622d759bc3a885a12662b.zip gcc-ca5ba2a3ea97efc7f23622d759bc3a885a12662b.tar.gz gcc-ca5ba2a3ea97efc7f23622d759bc3a885a12662b.tar.bz2 |
c-common.c (warnings_for_convert_and_check): Use unsigned_type_for instead of c_common_unsigned_type.
gcc/
* c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
instead of c_common_unsigned_type.
(c_common_unsigned_type): Remove.
(shorten_compare): Use c_common_signed_or_unsigned_type instead of
c_common_unsigned_type.
(c_common_nodes_and_builtins): Use unsigned_type_for instead of
c_common_unsigned_type.
* c-common.h (c_common_unsigned_type): Remove.
* c-decl.c (grokdeclarator): Use unsigned_type_for instead of
c_common_unsigned_type.
* c-format.c (check_format_types): Use unsigned_type_for instead of
c_common_unsigned_type.
* c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
* c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
c_common_unsigned_type.
* convert.c (convert_to_integer): Use unsigned_type_for instead of
lang_hooks.types.unsigned_type.
* expmed.c (make_tree): Use unsigned_type_for instead of
lang_hooks.types.unsigned_type.
* fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
lang_hooks.types.unsigned_type.
(build_range_check): Likewise.
(fold_unary): Likewise.
(fold_binary): Likewise.
(fold_ternary): Likewise.
* langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
* langhooks.h (lang_hooks_for_types): Remove unsigned_type.
* tree.c (get_unsigned_type): New.
(unsigned_type_for): Use get_unsigned_type instead of
lang_hooks.types.unsigned_type
gcc/ada
* misc.c (LANG_HOOKS_UNSIGNED_TYPE): Remove.
gcc/cp
* cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
* decl.c (grokdeclarator): Use unsigned_type_for instead of
c_common_unsigned_type.
gcc/fortran
* f95-lang.c (LANG_HOOKS_UNSIGNED_TYPE): Remove.
* trans-intrinsic.c (gfc_conv_intrinsic_ishft): Use unsigned_type_for
instead of gfc_unsigned_type.
* trans-stmt.c (gfc_trans_do): Use unsigned_type_for instead of
gfc_unsigned_type.
* trans-types.c (gfc_unsigned_type): Remove.
* trans-types.h (gfc_unsigned_type): Remove.
gcc/java
* expr.c (build_java_binop): Use unsigned_type_for instead of
java_unsigned_type.
* java-tree.h (java_unsigned_type): Remove.
* lang.c (LANG_HOOKS_UNSIGNED_TYPE): Remove.
* typeck.c (java_unsigned_type): Remove.
gcc/treelang
* treetree.c (tree_lang_unsigned_type): Remove.
(LANG_HOOKS_UNSIGNED_TYPE): Remove.
From-SVN: r124715
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r-- | gcc/c-common.c | 42 |
1 files changed, 5 insertions, 37 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index 17a0067..d132be9 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -1330,7 +1330,7 @@ warnings_for_convert_and_check (tree type, tree expr, tree result) else if (warn_conversion) conversion_warning (type, expr); } - else if (!int_fits_type_p (expr, c_common_unsigned_type (type))) + else if (!int_fits_type_p (expr, unsigned_type_for (type))) warning (OPT_Woverflow, "overflow in implicit constant conversion"); /* No warning for converting 0x80000000 to int. */ @@ -2025,39 +2025,6 @@ c_common_type_for_mode (enum machine_mode mode, int unsignedp) return 0; } -/* Return an unsigned type the same as TYPE in other respects. */ -tree -c_common_unsigned_type (tree type) -{ - tree type1 = TYPE_MAIN_VARIANT (type); - if (type1 == signed_char_type_node || type1 == char_type_node) - return unsigned_char_type_node; - if (type1 == integer_type_node) - return unsigned_type_node; - if (type1 == short_integer_type_node) - return short_unsigned_type_node; - if (type1 == long_integer_type_node) - return long_unsigned_type_node; - if (type1 == long_long_integer_type_node) - return long_long_unsigned_type_node; - if (type1 == widest_integer_literal_type_node) - return widest_unsigned_literal_type_node; -#if HOST_BITS_PER_WIDE_INT >= 64 - if (type1 == intTI_type_node) - return unsigned_intTI_type_node; -#endif - if (type1 == intDI_type_node) - return unsigned_intDI_type_node; - if (type1 == intSI_type_node) - return unsigned_intSI_type_node; - if (type1 == intHI_type_node) - return unsigned_intHI_type_node; - if (type1 == intQI_type_node) - return unsigned_intQI_type_node; - - return c_common_signed_or_unsigned_type (1, type); -} - /* Return a signed type the same as TYPE in other respects. */ tree @@ -2500,7 +2467,8 @@ shorten_compare (tree *op0_ptr, tree *op1_ptr, tree *restype_ptr, default: break; } - type = c_common_unsigned_type (type); + /* unsigned_type_for doesn't support C bit fields */ + type = c_common_signed_or_unsigned_type (1, type); } if (TREE_CODE (primop0) != INTEGER_CST) @@ -3667,7 +3635,7 @@ c_common_nodes_and_builtins (void) else { signed_wchar_type_node = c_common_signed_type (wchar_type_node); - unsigned_wchar_type_node = c_common_unsigned_type (wchar_type_node); + unsigned_wchar_type_node = unsigned_type_for (wchar_type_node); } /* This is for wide string constants. */ @@ -3685,7 +3653,7 @@ c_common_nodes_and_builtins (void) default_function_type = build_function_type (integer_type_node, NULL_TREE); ptrdiff_type_node = TREE_TYPE (identifier_global_value (get_identifier (PTRDIFF_TYPE))); - unsigned_ptrdiff_type_node = c_common_unsigned_type (ptrdiff_type_node); + unsigned_ptrdiff_type_node = unsigned_type_for (ptrdiff_type_node); lang_hooks.decls.pushdecl (build_decl (TYPE_DECL, get_identifier ("__builtin_va_list"), |