diff options
author | Kaveh R. Ghazi <ghazi@caip.rutgers.edu> | 2007-09-03 17:09:20 +0000 |
---|---|---|
committer | Kaveh Ghazi <ghazi@gcc.gnu.org> | 2007-09-03 17:09:20 +0000 |
commit | b1d5455a5efad3f380671cf818515a1a6ec94546 (patch) | |
tree | c67ebc05c0f9f25bf5e2c4cfeb978cad7945373c /gcc/system.h | |
parent | d74b97cc7e574d56c7542f40a76b151e7088829b (diff) | |
download | gcc-b1d5455a5efad3f380671cf818515a1a6ec94546.zip gcc-b1d5455a5efad3f380671cf818515a1a6ec94546.tar.gz gcc-b1d5455a5efad3f380671cf818515a1a6ec94546.tar.bz2 |
system.h (CONST_CAST2, [...]): New macros for type-specific casts.
* system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
CONST_CAST_BB): New macros for type-specific casts.
(CONST_CAST): Add a TYPE parameter and define it in terms of
CONST_CAST2.
* c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
* c-lex.c (cb_ident, lex_string): Likewise,
* c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
* config/i386/i386.c (ix86_function_regparm,
ix86_function_sseregparm): Use CONST_CAST_TREE.
* config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
CONST_CAST.
* gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
give_switch, set_multilib_dir): Likewise,
* gengtype-parse.c (string_seq, typedef_name): Likewise,
* gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
* jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
* passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
* prefix.c (update_path): Likewise,
* pretty-print.c (pp_base_destroy_prefix): Likewise,
* rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
* tree-cfg.c (tree_can_merge_blocks_p,
tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
* tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
* tree.c (build_string): Supply a TYPE for CONST_CAST.
(attribute_list_contained): Use CONST_CAST_TREE.
cp:
* call.c (name_as_c_string): Supply a TYPE for CONST_CAST.
* decl.c (cp_make_fname_decl): Likewise,
* parser.c (cp_parser_string_literal): Likewise,
* tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE.
* typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
Likewise,
fortran:
* gfortranspec.c (lang_specific_driver): Use CONST_CAST2.
* options.c (gfc_post_options): Supply a TYPE for CONST_CAST.
* parse.c (parse_omp_structured_block): Likewise,
* st.c (gfc_free_statement): Likewise,
java:
* jcf-parse.c (read_class, java_parse_file): Supply a TYPE for
CONST_CAST.
* jcf.h (JCF_FINISH): Likewise.
From-SVN: r128051
Diffstat (limited to 'gcc/system.h')
-rw-r--r-- | gcc/system.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/system.h b/gcc/system.h index c90ded1..1696b9c 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -784,10 +784,14 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; #if defined(__GNUC__) && GCC_VERSION != 4000 /* GCC 4.0.x has a bug where it may ICE on this expression. */ -#define CONST_CAST(X) ((__extension__(union {__typeof(X)_q; void *_v;})(X))._v) +#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((__extension__(union {FROMTYPE _q; TOTYPE _nq;})(X))._nq) #else -#define CONST_CAST(X) ((void*)(X)) +#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((TOTYPE)(FROMTYPE)(X)) #endif +#define CONST_CAST(TYPE,X) CONST_CAST2(TYPE, const TYPE, (X)) +#define CONST_CAST_TREE(X) CONST_CAST(union tree_node *, (X)) +#define CONST_CAST_RTX(X) CONST_CAST(struct rtx_def *, (X)) +#define CONST_CAST_BB(X) CONST_CAST(struct basic_block_def *, (X)) /* Activate -Wcast-qual as a warning (not an error/-Werror). */ #if GCC_VERSION >= 4003 |