X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fc-common.h;h=d372e70631e6d74756252e95ecd77d9b88956ca1;hb=d0aaf3990d011abe5d7c65905f240a60d2fdccb6;hp=14448800ce09137c203f284f79993865b0f67bc6;hpb=c1800156667f848af4445c36b60a92e6260233c1;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/c-common.h b/gcc/c-common.h index 14448800ce0..d372e70631e 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -110,6 +110,7 @@ enum rid RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM, RID_IS_POD, RID_IS_POLYMORPHIC, + RID_IS_STD_LAYOUT, RID_IS_TRIVIAL, RID_IS_UNION, /* C++0x */ @@ -418,7 +419,7 @@ extern void push_cleanup (tree, tree, bool); extern tree pushdecl_top_level (tree); extern tree pushdecl (tree); extern tree build_modify_expr (location_t, tree, tree, enum tree_code, - tree, tree); + location_t, tree, tree); extern tree build_indirect_ref (location_t, tree, const char *); extern int c_expand_decl (tree); @@ -719,10 +720,13 @@ extern int warn_strict_null_sentinel; extern int max_tinst_depth; -/* Nonzero means the expression being parsed will never be evaluated. - This is a count, since unevaluated expressions can nest. */ +/* Nonzero means that we should not issue warnings about problems that + occur when the code is executed, because the code being processed + is not expected to be executed. This is set during parsing. This + is used for cases like sizeof() and "0 ? a : b". This is a count, + not a bool, because unexecuted expressions can nest. */ -extern int skip_evaluation; +extern int c_inhibit_evaluation_warnings; /* Whether lexing has been completed, so subsequent preprocessor errors should use the compiler's input_location. */ @@ -754,7 +758,7 @@ extern const struct attribute_spec c_common_format_attribute_table[]; TYPE_DEP indicates whether it depends on type of the function or not (i.e. __PRETTY_FUNCTION__). */ -extern tree (*make_fname_decl) (tree, int); +extern tree (*make_fname_decl) (location_t, tree, int); extern tree identifier_global_value (tree); extern void record_builtin_type (enum rid, const char *, tree); @@ -791,8 +795,8 @@ extern tree decl_constant_value_for_optimization (tree); extern tree c_save_expr (tree); extern tree c_common_truthvalue_conversion (location_t, tree); extern void c_apply_type_quals_to_decl (int, tree); -extern tree c_sizeof_or_alignof_type (tree, bool, int); -extern tree c_alignof_expr (tree); +extern tree c_sizeof_or_alignof_type (location_t, tree, bool, int); +extern tree c_alignof_expr (location_t, tree); /* Print an error message for invalid operands to arith operation CODE. NOP_EXPR is used as a special case (see truthvalue_conversion). */ extern void binary_op_error (location_t, enum tree_code, tree, tree); @@ -803,15 +807,20 @@ extern void constant_expression_error (tree); extern bool strict_aliasing_warning (tree, tree, tree); extern void warnings_for_convert_and_check (tree, tree, tree); extern tree convert_and_check (tree, tree); -extern void overflow_warning (tree); -extern void warn_logical_operator (location_t, enum tree_code, +extern void overflow_warning (location_t, tree); +extern void warn_logical_operator (location_t, enum tree_code, tree, enum tree_code, tree, enum tree_code, tree); extern void check_main_parameter_types (tree decl); extern bool c_determine_visibility (tree); extern bool same_scalar_type_ignoring_signedness (tree, tree); +extern void mark_valid_location_for_stdc_pragma (bool); +extern bool valid_location_for_stdc_pragma_p (void); +extern void set_float_const_decimal64 (void); +extern void clear_float_const_decimal64 (void); +extern bool float_const_decimal64_p (void); -#define c_sizeof(T) c_sizeof_or_alignof_type (T, true, 1) -#define c_alignof(T) c_sizeof_or_alignof_type (T, false, 1) +#define c_sizeof(LOC, T) c_sizeof_or_alignof_type (LOC, T, true, 1) +#define c_alignof(LOC, T) c_sizeof_or_alignof_type (LOC, T, false, 1) /* Subroutine of build_binary_op, used for certain operations. */ extern tree shorten_binary_op (tree result_type, tree op0, tree op1, bool bitwise); @@ -821,7 +830,7 @@ extern tree shorten_binary_op (tree result_type, tree op0, tree op1, bool bitwis and, if so, perhaps change them both back to their original type. */ extern tree shorten_compare (tree *, tree *, tree *, enum tree_code *); -extern tree pointer_int_sum (enum tree_code, tree, tree); +extern tree pointer_int_sum (location_t, enum tree_code, tree, tree); /* Add qualifiers to a type, in the fashion for C. */ extern tree c_build_qualified_type (tree, int); @@ -836,7 +845,7 @@ extern void disable_builtin_function (const char *); extern void set_compound_literal_name (tree decl); -extern tree build_va_arg (tree, tree); +extern tree build_va_arg (location_t, tree, tree); extern unsigned int c_common_init_options (unsigned int, const char **); extern bool c_common_post_options (const char **); @@ -891,9 +900,9 @@ extern void finish_file (void); #define CLEAR_DECL_C_BIT_FIELD(NODE) \ (DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) = 0) -extern tree do_case (tree, tree); -extern tree build_stmt (enum tree_code, ...); -extern tree build_case_label (tree, tree, tree); +extern tree do_case (location_t, tree, tree); +extern tree build_stmt (location_t, enum tree_code, ...); +extern tree build_case_label (location_t, tree, tree, tree); /* These functions must be defined by each front-end which implements a variant of the C language. They are used in c-common.c. */ @@ -919,15 +928,16 @@ extern tree boolean_increment (enum tree_code, tree); extern int case_compare (splay_tree_key, splay_tree_key); -extern tree c_add_case_label (splay_tree, tree, tree, tree, tree); +extern tree c_add_case_label (location_t, splay_tree, tree, tree, tree, tree); extern void c_do_switch_warnings (splay_tree, location_t, tree, tree); -extern tree build_function_call (tree, tree); +extern tree build_function_call (location_t, tree, tree); -extern tree build_function_call_vec (tree, VEC(tree,gc) *, VEC(tree,gc) *); +extern tree build_function_call_vec (location_t, tree, + VEC(tree,gc) *, VEC(tree,gc) *); -extern tree resolve_overloaded_builtin (tree, VEC(tree,gc) *); +extern tree resolve_overloaded_builtin (location_t, tree, VEC(tree,gc) *); extern tree finish_label_address_expr (tree, location_t); @@ -972,8 +982,6 @@ extern void dump_time_statistics (void); extern bool c_dump_tree (void *, tree); -extern void c_warn_unused_result (gimple_seq); - extern void verify_sequence_points (tree); extern tree fold_offsetof (tree, tree); @@ -1008,11 +1016,15 @@ extern void warn_for_sign_compare (location_t, enum tree_code resultcode); extern void set_underlying_type (tree x); extern bool is_typedef_decl (tree x); +extern VEC(tree,gc) *make_tree_vector (void); +extern void release_tree_vector (VEC(tree,gc) *); +extern VEC(tree,gc) *make_tree_vector_single (tree); +extern VEC(tree,gc) *make_tree_vector_copy (const VEC(tree,gc) *); /* In c-gimplify.c */ extern void c_genericize (tree); extern int c_gimplify_expr (tree *, gimple_seq *, gimple_seq *); -extern tree c_build_bind_expr (tree, tree); +extern tree c_build_bind_expr (location_t, tree, tree); /* In c-pch.c */ extern void pch_init (void); @@ -1056,7 +1068,7 @@ extern void objc_declare_class (tree); extern void objc_declare_protocols (tree); extern tree objc_build_message_expr (tree); extern tree objc_finish_message_expr (tree, tree, tree); -extern tree objc_build_selector_expr (tree); +extern tree objc_build_selector_expr (location_t, tree); extern tree objc_build_protocol_expr (tree); extern tree objc_build_encode_expr (tree); extern tree objc_build_string_object (tree); @@ -1080,7 +1092,7 @@ extern void objc_start_method_definition (tree); extern void objc_finish_method_definition (tree); extern void objc_add_instance_variable (tree); extern tree objc_build_keyword_decl (tree, tree, tree); -extern tree objc_build_throw_stmt (tree); +extern tree objc_build_throw_stmt (location_t, tree); extern void objc_begin_try_stmt (location_t, tree); extern tree objc_finish_try_stmt (void); extern void objc_begin_catch_clause (tree); @@ -1104,15 +1116,15 @@ extern void pp_dir_change (cpp_reader *, const char *); extern bool check_missing_format_attribute (tree, tree); /* In c-omp.c */ -extern tree c_finish_omp_master (tree); -extern tree c_finish_omp_critical (tree, tree); -extern tree c_finish_omp_ordered (tree); -extern void c_finish_omp_barrier (void); -extern tree c_finish_omp_atomic (enum tree_code, tree, tree); -extern void c_finish_omp_flush (void); -extern void c_finish_omp_taskwait (void); +extern tree c_finish_omp_master (location_t, tree); +extern tree c_finish_omp_critical (location_t, tree, tree); +extern tree c_finish_omp_ordered (location_t, tree); +extern void c_finish_omp_barrier (location_t); +extern tree c_finish_omp_atomic (location_t, enum tree_code, tree, tree); +extern void c_finish_omp_flush (location_t); +extern void c_finish_omp_taskwait (location_t); extern tree c_finish_omp_for (location_t, tree, tree, tree, tree, tree, tree); -extern void c_split_parallel_clauses (tree, tree *, tree *); +extern void c_split_parallel_clauses (location_t, tree, tree *, tree *); extern enum omp_clause_default_kind c_omp_predetermined_sharing (tree); /* Not in c-omp.c; provided by the front end. */