1. 08 Oct, 2007 1 commit
    • varasm.c (compare_constant): Removed call to lang_hooks.expand_constant. · 6524147c
      	gcc/
      	* varasm.c (compare_constant): Removed call to
      	lang_hooks.expand_constant.
      	(copy_constants): Removed call to lang_hooks.expand_constant.
      	(compute_reloc_for_constant): Removed call to
      	lang_hooks.expand_constant.
      	(output_addressed_constants): Removed call to
      	lang_hooks.expand_constant.
      	(constructor_static_from_elts_p): Removed call to
      	lang_hooks.expand_constant.
      	(output_constant): Removed calls to lang_hooks.expand_constant.
      	* langhooks.h (struct lang_hooks): Removed field expand_constant.
      	* langhooks-def.h (lhd_return_tree): Removed.
      	(LANG_HOOKS_EXPAND_CONSTANT): Removed.
      	(LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
      	* langhooks.c (lhd_return_tree): Removed.
      
      	gcc/cp/
      	* typeck2.c (digest_init): Call cplus_expand_constant after
      	convert_for_initialization.
      	* cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
      	* expr.c (cplus_expand_constant): Updated function description.
      
      	gcc/ada/
      	* misc.c (LANG_HOOKS_PUSHDECL): Replaced lhd_return_tree with
      	gnat_return_tree.
      	(gnat_init_gcc_eh): Replaced gnat_eh_runtime_type with
      	gnat_return_tree.
      	(gnat_eh_runtime_type): Removed.
      	(gnat_return_tree): New function.
      
      From-SVN: r129133
      Ollie Wild committed
  2. 29 Sep, 2007 1 commit
    • Revert · 6dcee2d6
      	2007-09-27  Ollie Wild  <aaw@google.com>
      
      	gcc/
      	* varasm.c (compare_constant): Removed call to
      	lang_hooks.expand_constant.
      	(copy_constants): Removed call to lang_hooks.expand_constant.
      	(compute_reloc_for_constant): Removed call to
      	lang_hooks.expand_constant.
      	(output_addressed_constants): Removed call to
      	lang_hooks.expand_constant.
      	(constructor_static_from_elts_p): Removed call to
      	lang_hooks.expand_constant.
      	(output_constant): Removed calls to lang_hooks.expand_constant.
      	* langhooks.h (struct lang_hooks): Removed field expand_constant.
      	* langhooks-def.h (lhd_return_tree): Removed.
      	(LANG_HOOKS_EXPAND_CONSTANT): Removed.
      	(LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
      	* langhooks.c (lhd_return_tree): Removed.
      
      	gcc/cp/
      	* typeck2.c (digest_init): Call cplus_expand_constant after
      	convert_for_initialization.
      	* cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
      	* expr.c (cplus_expand_constant): Updated function description.
      
      From-SVN: r128881
      Ollie Wild committed
  3. 28 Sep, 2007 1 commit
    • varasm.c (compare_constant): Removed call to lang_hooks.expand_constant. · 12487dd0
      	gcc/
      	* varasm.c (compare_constant): Removed call to
      	lang_hooks.expand_constant.
      	(copy_constants): Removed call to lang_hooks.expand_constant.
      	(compute_reloc_for_constant): Removed call to
      	lang_hooks.expand_constant.
      	(output_addressed_constants): Removed call to
      	lang_hooks.expand_constant.
      	(constructor_static_from_elts_p): Removed call to
      	lang_hooks.expand_constant.
      	(output_constant): Removed calls to lang_hooks.expand_constant.
      	* langhooks.h (struct lang_hooks): Removed field expand_constant.
      	* langhooks-def.h (lhd_return_tree): Removed.
      	(LANG_HOOKS_EXPAND_CONSTANT): Removed.
      	(LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
      	* langhooks.c (lhd_return_tree): Removed.
      
      	gcc/cp/
      	* typeck2.c (digest_init): Call cplus_expand_constant after
      	convert_for_initialization.
      	* cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
      	* expr.c (cplus_expand_constant): Updated function description.
      
      From-SVN: r128859
      Ollie Wild committed
  4. 05 Sep, 2007 1 commit
  5. 24 Aug, 2007 1 commit
    • alpha.c (alpha_mangle_type, [...]): Constify. · 3101faab
      	* config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
      	alpha_in_small_data_p, alpha_split_complex_arg,
      	alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
      	Constify.
      	* config/arm/arm-protos.h (arm_mangle_type): Likewise.
      	* config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
      	Likewise.
      	* config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
      	TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
      	* config/darwin-protos.h (darwin_binds_local_p): Likewise.
      	* config/darwin.c (darwin_binds_local_p): Likewise.
      	* config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
      	Likewise.
      	* config/i386/i386-protos.h (i386_pe_binds_local_p,
      	i386_pe_valid_dllimport_attribute_p): Likewise.
      	* config/i386/i386.c (ix86_function_regparm,
      	ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
      	x86_can_output_mi_thunk, ix86_mangle_type,
      	TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
      	* config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
      	i386_pe_binds_local_p): Likewise.
      	* config/ia64/ia64.c
      	(ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
      	ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
      	ia64_invalid_conversion, ia64_invalid_unary_op,
      	ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
      	Likewise.
      	* config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
      	* config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
      	* config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
      	* config/mips/mips.c (mips_use_blocks_for_constant_p,
      	mips_in_small_data_p, mips_use_anchors_for_symbol_p,
      	mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
      	mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
      	mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
      	* config/pa/pa.c (pa_commutative_p): Likewise.
      	* config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
      	Likewise.
      	* config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
      	rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
      	rs6000_use_blocks_for_constant_p,
      	rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
      	invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
      	TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
      	* config/s390/s390.c (s390_mangle_type,
      	TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
      	Likewise.
      	* config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
      	th_in_small_data_p): Likewise.
      	* config/sh/sh.c (sh_ms_bitfield_layout_p,
      	sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
      	Likewise.
      	* config/sparc/sparc.c (sparc_can_output_mi_thunk,
      	sparc_mangle_type): Likewise.
      	* config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
      	* config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
      	* emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
      	Likewise.
      	* hooks.c (hook_bool_mode_const_rtx_false,
      	hook_bool_mode_const_rtx_true,
      	hook_bool_const_tree_hwi_hwi_const_tree_false,
      	hook_bool_const_tree_hwi_hwi_const_tree_true,
      	hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
      	hook_constcharptr_const_tree_null,
      	hook_constcharptr_const_rtx_null,
      	hook_constcharptr_const_tree_const_tree_null,
      	hook_constcharptr_int_const_tree_null,
      	hook_constcharptr_int_const_tree_const_tree_null): New.
      	(hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
      	hook_bool_tree_hwi_hwi_tree_false,
      	hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
      	hook_int_tree_tree_1, hook_constcharptr_tree_null,
      	hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
      	hook_constcharptr_int_tree_null,
      	hook_constcharptr_int_tree_tree_null): Delete.
      	(default_can_output_mi_thunk_no_vcall): Constify.
      	* hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
      	hook_bool_tree_hwi_hwi_tree_false,
      	hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
      	hook_int_tree_tree_1, hook_constcharptr_tree_null,
      	hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
      	hook_constcharptr_int_tree_null,
      	hook_constcharptr_int_tree_tree_null): Delete.
      	(hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
      	hook_bool_const_tree_hwi_hwi_const_tree_false,
      	hook_bool_const_tree_hwi_hwi_const_tree_true,
      	hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
      	hook_constcharptr_const_tree_null,
      	hook_constcharptr_const_rtx_null,
      	hook_constcharptr_const_tree_const_tree_null,
      	hook_constcharptr_int_const_tree_null,
      	hook_constcharptr_int_const_tree_const_tree_null): New.
      	(default_can_output_mi_thunk_no_vcall): Constify.
      	* integrate.c (function_attribute_inlinable_p): Likewise.
      	* integrate.h (function_attribute_inlinable_p): Likewise.
      	* jump.c (rtx_renumbered_equal_p): Likewise.
      	* output.h (decl_readonly_section, categorize_decl_for_section,
      	default_use_anchors_for_symbol_p, default_binds_local_p,
      	default_binds_local_p_1): Likewise.
      	* rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
      	Likewise.
      	* target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
      	TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
      	TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
      	TARGET_COMP_TYPE_ATTRIBUTES,
      	TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
      	TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
      	TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
      	TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
      	TARGET_DWARF_CALLING_CONVENTION): Likewise.
      	* target.h (can_output_mi_thunk, needs_block_p,
      	first_cycle_multipass_dfa_lookahead_guard_spec,
      	vector_alignment_reachable, comp_type_attributes,
      	function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
      	commutative_p, use_blocks_for_constant_p,
      	use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
      	vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
      	invalid_within_doloop, valid_dllimport_attribute_p,
      	split_complex_arg, invalid_arg_for_unprototyped_fn,
      	invalid_conversion, invalid_unary_op, invalid_binary_op):
      	Likewise.
      	* targhooks.c (default_invalid_within_doloop,
      	hook_invalid_arg_for_unprototyped_fn,
      	default_builtin_vector_alignment_reachable): Likewise.
      	(hook_bool_rtx_commutative_p): Delete.
      	(hook_bool_const_rtx_commutative_p): New.
      	* targhooks.h (default_invalid_within_doloop,
      	default_builtin_vector_alignment_reachable,
      	hook_invalid_arg_for_unprototyped_fn): Constify.
      	(hook_bool_rtx_commutative_p): Delete.
      	(hook_bool_const_rtx_commutative_p): New.
      	* varasm.c (bss_initializer_p, decl_default_tls_model,
      	categorize_decl_for_section, decl_readonly_section,
      	default_use_anchors_for_symbol_p, default_binds_local_p,
      	default_binds_local_p_1): Constify.
      
      From-SVN: r127785
      Kaveh R. Ghazi committed
  6. 23 Aug, 2007 1 commit
    • rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes in DEF_RTL_EXPR. · 091a3ac7
      	* rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
      	in DEF_RTL_EXPR.
      	(copy_rtx): Handle CONST_FIXED.
      	(rtx_equal_p): Likewise.
      	* rtl.h (fixed_value.h): New include.
      	(rtx_def): Add a new field of fixed_value to u.
      	(XCNMPFV): Define for accessing fixed_value.
      	(CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
      	Define.
      	* rtl.def (CONST_FIXED): New constant.
      	(SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
      	UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
      	US_ASHIFT): New codes.
      	* doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
      	us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
      	unsigned_fract_convert, unsigned_sat_fract): Document them.
      	* varasm.c (assemble_integer): Extend to support fixed-point constants
      	by using different machine classes.
      	(decode_addr_const): Handle FIXED_CST.
      	(const_hash_1): Likewise.
      	(compare_constant): Likewise.
      	(copy_constant): Likewise.
      	(const_rtx_hash_1): Handle CONST_FIXED.
      	(output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
      	MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
      	MODE_VECTOR_UACCUM.
      	(initializer_constant_valid_p): Handle FIXED_CST.
      	(output_constant): Support FIXED_POINT_TYPE.
      	* gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
      	* cse.c (hash_rtx): Support CONST_FIXED.
      	(exp_equiv_p): Likewise.
      	(cannon_reg): Likewise.
      	(fold_rtx): Likewise.
      	(equiv_constant): Likewise.
      	(cse_process_notes_1): Likewise.
      	(count_reg_usage): Likewise.
      	* cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
      	(rtx_equal_for_cselib_p): Handle CONST_FIXED.
      	(wrap_constant): Check CONST_FIXED.
      	(cselib_hash_rtx): Support CONST_FIXED.
      	(cselib_subst_to_values): Likewise.
      	* df-scan.c (df_uses_record): Likewise.
      	* gcse.c (want_to_gcse_p): Likewise.
      	(oprs_unchanged_p): Likewise.
      	(oprs_not_set_p): Likewise.
      	(compute_transp): Likewise.
      	(extract_mentioned_regs_helper): Likewise.
      	* genemit.c (gen_exp): Likewise.
      	* local-alloc.c (equiv_init_varies_p): Likewise.
      	(contains_replace_regs): Likewise.
      	(memref_referenced_p): Likewise.
      	* loop-invariant.c (check_maybe_invariant): Likewise.
      	(hash_invariant_expr_1): Likewise.
      	(invariant_expr_equal_p): Likewise.
      	* postreload-gcse.c (oprs_unchanged_p): Likewise.
      	* regclass.c (reg_scan_mark_refs): Likewise.
      	* regrename.c (scan_rtx): Likewise.
      	* resource.c (mark_referenced_resources): Likewise.
      	(mark_set_resources): Likewise.
      	* rtlanal.c (rtx_unstable_p): Likewise.
      	(rtx_varies_p): Likewise.
      	(count_occurrences): Likewise.
      	(reg_mentioned_p): Likewise.
      	(modified_between_p): Likewise.
      	(modified_in_p): Likewise.
      	(volatile_insn_p): Likewise.
      	(volatile_refs_p): Likewise.
      	(side_effects_p): Likewise.
      	(may_trap_p_1): Likewise.
      	(inequality_comparisons_p): Likewise.
      	(computed_jump_p_1): Likewise.
      	(commutative_operand_precedence): Likewise.
      	* sched-deps.c (sched_analyze_2): Likewise.
      	* sched-vis.c (print_value): Likewise.
      	* reload.c (operands_match_p): Likewise.
      	(subst_reg_equivs): Likewise.
      	* reload1.c (eliminate_regs_1): Likewise.
      	(elimination_effects): Likewise.
      	(scan_paradoxical_subregs): Likewise.
      	* alias.c (rtx_equal_for_memref_p): Likewise.
      	* Makefile.in (RTL_BASE_H): Add fixed-value.h.
      	* emit-rtl.c (const_fixed_htab): New hash table.
      	(const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
      	Declare.
      	(const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
      	const_fixed_from_fixed_value): New functions.
      	(verify_rtx_sharing): Handle CONST_FIXED.
      	(copy_rtx_if_shared_1): Likewise.
      	(reset_used_flags): Likewise.
      	(set_used_flags): Likewise.
      	(copy_insn_1): Likewise.
      	(init_emit_once): Create const_fixed_htab.
      	Store fixed-point scalar and vector zero and one to const_tiny_rtx.
      
      From-SVN: r127725
      Chao-ying Fu committed
  7. 11 Aug, 2007 1 commit
    • alias.h (alias_set_type): Define new type. · 4862826d
      ./:	* alias.h (alias_set_type): Define new type.
      	(ALIAS_SET_MEMORY_BARRIER): Use it.
      	* rtl.h: Include alias.h.
      	(struct mem_attrs): Use alias_set_type.
      	* tree.h: Include alias.h
      	(struct tree_type): Use alias_set_type.
      	(struct tree_struct_field_tag): Likewise.
      	(struct tree_decl_common): Likewise.
      	* alias.c (struct alias_set_entry): Use alias_set_type.
      	(get_alias_set_entry, alias_set_subset_of): Likewise.
      	(alias_sets_conflict_p): Likewise.
      	(alias_sets_must_conflict_p): Likewise.
      	(objects_must_conflict_p): Likewise.
      	(get_alias_set, new_alias_set): Likewise.
      	(record_alias_subset, record_component_aliases): Likewise.
      	(varargs_set, frame_set): Change to alias_set_type.
      	(get_varargs_alias_set): Use alias_set_type.
      	(get_frame_alias_set): Likewise.
      	* builtins.c (setjmp_alias_set): Change to alias_set_type.
      	* dse.c (struct store_info): Use alias_set_type.
      	(struct read_info, struct clear_alias_mode_holder): Likewise.
      	(clear_alias_set_lookup, canon_address): Likewise.
      	(record_store, check_mem_read_rtx): Likewise.
      	(dse_record_singleton_alias_set): Likewise.
      	(dse_invalidate_singleton_alias_set): Likewise.
      	* emit-rtl.c (get_mem_attrs): Likewise.
      	(set_mem_attributes_minus_bitpos): Likewise.
      	(set_mem_alias_set): Likewise.
      	* expr.c (store_constructor_field, store_field): Likewise.
      	* gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
      	* langhooks.c (lhd_get_alias_set): Likewise.
      	* langhooks-def.h (lhd_get_alias_set): Likewise.
      	* reload1.c (alter_reg): Likewise.
      	* tree-flow.h (struct fieldoff): Likewise.
      	* tree-ssa-alias.c (struct alias_map_d): Likewise.
      	(may_alias_p, get_smt_for, create_sft): Likewise.
      	* tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
      	* tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
      	(merge_smts_into): Likewise.
      	* varasm.c (const_alias_set): Likewise.
      	* c-common.c (strict_aliasing_warning): Likewise.
      	(c_common_get_alias_set): Likewise.
      	* dse.h (dse_record_singleton_alias_set): Update declaration.
      	(dse_invalidate_singleton_alias_set): Likewise.
      	* emit-rtl.h (set_mem_alias_set): Likewise.
      	* c-common.h (c_common_get_alias_set): Likewise.
      	* print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
      	* print-tree.c (print_node): Likewise.
      	* config/alpha/alpha.c (alpha_sr_alias_set): Change to
      	alias_set_type.
      	(alpha_setup_incoming_varargs): Use alias_set_type.
      	* config/i386/i386.c (setup_incoming_varargs_64): Use
      	alias_set_type.
      	(setup_incoming_varargs_ms_64): Likewise.
      	(ix86_GOT_alias_set): Likewise.
      	* config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
      	* config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
      	(set): Change to alias_set_type.
      	(get_TOC_alias_set): Use alias_set_type.
      	* config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
      	declaration.
      	* config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
      	* config/sparc/sparc.c (sparc_sr_alias_set): Change to
      	alias_set_type.
      	(struct_value_alias_set): Likewise.
      	* Makefile.in (GTFILES): Add $(srcdir)/alias.h.
      ada/:
      	* misc.c (gnat_get_alias_set): Change return type to
      	alias_set_type.
      cp/:
      	* cp-objcp-common.c (cxx_get_alias_set): Change return type to
      	alias_set_type.
      	* cp/cp-tree.h (cxx_get_alias_set): Update declaration.
      fortran:/
      	* f95-lang.c (gfc_get_alias_set): Change return type to
      	alias_set_type.
      
      From-SVN: r127362
      Ian Lance Taylor committed
  8. 02 Aug, 2007 1 commit
  9. 29 Jul, 2007 1 commit
    • attribs.c (hash_attr, [...]): Constify. · fa233e34
      	* attribs.c (hash_attr, eq_attr, init_attributes): Constify.
      	* builtins.c (validate_arg, builtin_mathfn_code,
      	validate_arglist): Likewise.
      	* calls.c (call_expr_flags): Likewise.
      	* combine.c (reg_nonzero_bits_for_combine,
      	reg_num_sign_bit_copies_for_combine, get_last_value,
      	reg_truncated_to_mode): Likewise.
      	* emit-rtl.c (subreg_lowpart_p): Likewise.
      	* expr.c (highest_pow2_factor_for_target,
      	categorize_ctor_elements_1, categorize_ctor_elements,
      	count_type_elements, contains_packed_reference,
      	highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
      	* fold-const.c (may_negate_without_overflow_p, int_const_binop,
      	fold_convertible_p, operand_equal_p, tree_swap_operands_p,
      	native_encode_int, native_encode_real, native_encode_complex,
      	native_encode_vector, native_encode_expr, native_interpret_int,
      	native_interpret_real, native_interpret_complex,
      	native_interpret_vector, native_interpret_expr): Likewise.
      	* function.c (use_register_for_decl): Likewise.
      	* gimplify.c (get_name): Likewise.
      	* langhooks-def.h (lhd_return_null_const_tree): New.
      	(LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
      	* langhooks.c (lhd_return_null_const_tree): New.
      	* langhooks.h (lang_get_callee_fndecl): Constify.
      	* output.h (constructor_static_from_elts_p): Likewise.
      	* rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
      	* rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
      	subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
      	* rtlanal.c (cached_nonzero_bits, nonzero_bits1,
      	cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
      	nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
      	* rtlhooks-def.h (reg_nonzero_bits_general,
      	reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
      	Likewise. 
      	* rtlhooks.c (reg_num_sign_bit_copies_general,
      	reg_nonzero_bits_general, reg_truncated_to_mode_general):
      	Likewise. 
      	* stmt.c (warn_if_unused_value, is_body_block): Likewise.
      	* stor-layout.c (mode_for_size_tree): Likewise.
      	* tree-ssa-loop-im.c (memref_eq): Likewise.
      	* tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
      	* tree.c (contains_placeholder_p, type_list_equal,
      	simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
      	Likewise. 
      	* tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
      	mode_for_size_tree, categorize_ctor_elements, count_type_elements,
      	contains_placeholder_p, contains_packed_reference,
      	get_callee_fndecl, operand_equal_for_phi_arg_p,
      	warn_if_unused_value, is_body_block, native_encode_expr,
      	native_interpret_expr, fold_convertible_p, operand_equal_p,
      	int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
      	validate_arglist, simple_cst_equal, type_list_equal,
      	use_register_for_decl, call_expr_flags, get_name,
      	highest_pow2_factor): Likewise.
      	(const_call_expr_arg_iterator_d,
      	init_const_call_expr_arg_iterator, next_const_call_expr_arg,
      	first_const_call_expr_arg, more_const_call_expr_args_p,
      	FOR_EACH_CONST_CALL_EXPR_ARG): New.
      	* varasm.c (constructor_static_from_elts_p): Constify.
      	
      cp:
      	* parser.c (eof_token): Un-constify.
      	(cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc,
      	cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious
      	casts.
      
      java:
      	* lang.c (java_get_callee_fndecl): Constify.
      
      objc:
      	* objc-act.c (objc_get_callee_fndecl): Constify.
      	* objc-act.h (objc_get_callee_fndecl): Likewise.
      
      From-SVN: r127036
      Kaveh R. Ghazi committed
  10. 26 Jul, 2007 1 commit
  11. 25 Jul, 2007 2 commits
    • c-common.c (fname_as_string, [...]): Constify. · 741ac903
      	* c-common.c (fname_as_string, c_type_hash): Constify.
      	* c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
      	* cgraph.c (edge_hash, edge_eq): Likewise.
      	* dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
      	* emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
      	reg_attrs_htab_eq): Likewise.
      	* except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
      	Likewise.
      	* genautomata.c (const_reserv_sets_t, const_unit_decl_t,
      	const_decl_t, const_state_t, const_automata_list_el_t): New.
      	(first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
      	DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
      	automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
      	insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
      	reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
      	automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
      	compare_max_occ_cycle_nums, out_state_arcs_num,
      	compare_transition_els_num, units_cmp, state_reservs_cmp):
      	Constify.
      	* genmodes.c (cmp_modes): Likewise.
      	* ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
      	* gimplify.c (compare_case_labels): Likewise.
      	* ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
      	* loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
      	* matrix-reorg.c (mtt_info_hash): Likewise.
      	* postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
      	* rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
      	(htab_hash_bucket, htab_hash_elem): Constify.
      	* tree-browser.c (TB_parent_eq): Likewise.
      	* tree-scalar-evolution.c (hash_scev_info): Likewise.
      	* tree-ssa-alias.c (sort_tags_by_id): Likewise.
      	* tree-ssa-coalesce.c (const_coalesce_pair_p): New.
      	(coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
      	Constify.
      	* tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
      	* tree-ssa-pre.c (const_expr_pred_trans_t): New.
      	(expr_pred_trans_hash, expr_pred_trans_eq): Constify.
      	* tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
      	const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
      	New.
      	(vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
      	vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
      	vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
      	* tree-ssa-threadupdate.c (redirection_data_hash,
      	redirection_data_eq): Likewise. 
      	* tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
      	* tree-ssa.c (var_ann_eq): Likewise.
      	* tree-vrp.c (compare_case_labels): Likewise.
      	* tree.c (int_cst_hash_hash, int_cst_hash_eq,
      	tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
      	tree_not_check_failed, tree_class_check_failed,
      	tree_range_check_failed, tree_not_class_check_failed,
      	omp_clause_check_failed, omp_clause_range_check_failed,
      	tree_contains_struct_check_failed, tree_operand_check_failed):
      	Likewise. 
      	* tree.h (tree_contains_struct_check_failed, tree_check_failed,
      	tree_not_check_failed, tree_class_check_failed,
      	tree_range_check_failed, tree_not_class_check_failed,
      	tree_operand_check_failed, omp_clause_operand_check_failed,
      	tree_operand_length): Likewise. 
      	* var-tracking.c (const_variable): New.
      	(variable_htab_hash, variable_htab_eq): Constify.
      	* varasm.c (const_desc_hash): Likewise.
      
      cp:
      	* decl.c (typename_hash, typename_compare): Constify.
      	* mangle.c (hash_type, compare_type): Likewise.
      	* pt.c (eq_local_specializations, hash_local_specialization):
      	Likewise.
      	* tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq,
      	list_hash): Likewise.
      	* typeck2.c (pat_compare): Likewise.
      
      fortran:
      	* gfortran.h (generate_isocbinding_symbol): Constify.
      	* symbol.c (gen_special_c_interop_ptr, gen_cptr_param,
      	generate_isocbinding_symbol): Likewise.
      
      java:
      	* class.c (java_treetreehash_hash, java_treetreehash_compare):
      	Constify. 
      	* expr.c (type_assertion_eq): Likewise.
      	* jcf-io.c (compare_path): Likewise.
      	* jcf-parse.c (cmpstringp): Likewise.
      	* verify-impl.c (get_one_type, compute_argument_types,
      	compute_return_type): Likewise. 
      
      objc:
      	* objc-act.c (volatilized_hash, volatilized_eq, string_hash,
      	string_eq): Constify.
      
      From-SVN: r126925
      Kaveh R. Ghazi committed
    • cfglayout.c (insn_scope, insn_line): Constify. · f7d504c2
      	* cfglayout.c (insn_scope, insn_line): Constify.
      	* emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
      	const_double_htab_hash, const_double_htab_eq,
      	mem_attrs_htab_hash): Likewise.
      	* loop-iv.c (biv_eq): Likewise.
      	* print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
      	print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
      	debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
      	Likewise. 
      	* rtl-error.c (location_for_asm, diagnostic_for_asm,
      	error_for_asm, warning_for_asm, _fatal_insn,
      	_fatal_insn_not_found): Likewise. 
      	* rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
      	rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
      	rtl_check_failed_type2, rtl_check_failed_code1,
      	rtl_check_failed_code2, rtl_check_failed_code_mode,
      	rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
      	* rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
      	rtl_check_failed_type2, rtl_check_failed_code1,
      	rtl_check_failed_code2, rtl_check_failed_code_mode,
      	rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
      	SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
      	shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
      	get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
      	mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
      	rtx_unstable_p, get_integer_term, get_related_value,
      	offset_within_block_p, reg_mentioned_p, count_occurrences,
      	reg_referenced_p, reg_used_between_p, no_labels_between_p,
      	single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
      	reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
      	find_reg_note, find_regno_note, find_reg_equal_equiv_note,
      	find_constant_src, find_reg_fusage, find_regno_fusage,
      	pure_call_p, remove_note, side_effects_p, volatile_refs_p,
      	volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
      	may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
      	computed_jump_p, auto_inc_p, in_expr_list_p,
      	remove_node_from_expr_list, loc_mentioned_in_p,
      	label_is_jump_target_p, reversed_comparison_code_parts,
      	debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
      	print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
      	print_inline_rtx): Likewise.
      	* rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
      	computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
      	rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
      	get_integer_term, get_related_value, offset_within_block_p,
      	count_occurrences, reg_mentioned_p, no_labels_between_p,
      	reg_used_between_p, reg_referenced_p, single_set_2,
      	multiple_sets, set_noop_p, refers_to_regno_p,
      	reg_overlap_mentioned_p, dead_or_set_p,
      	covers_regno_no_parallel_p, covers_regno_p,
      	dead_or_set_regno_p, find_reg_note, find_regno_note,
      	find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
      	find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
      	remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
      	side_effects_p, may_trap_p_1, may_trap_p,
      	may_trap_after_code_motion_p, may_trap_or_fault_p,
      	inequality_comparisons_p, tablejump_p, computed_jump_p_1,
      	computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
      	subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
      	* simplify-rtx.c (neg_const_int, plus_minus_operand_p,
      	mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
      	Likewise. 
      	* toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
      	warning_for_asm): Likewise.
      	* tree.h (print_rtl): Likewise.
      	* varasm.c (get_pool_mode): Likewise.
      
      From-SVN: r126922
      Kaveh R. Ghazi committed
  12. 12 Jul, 2007 1 commit
    • builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a FUNCTION_DECL. · d872ada0
      	* builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
      	FUNCTION_DECL.
      	* tree.c (build_decl_stat): Move code from here...
      	(make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
      	(expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
      	about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
      	* tree.h (DECL_USER_ALIGN): Fix misplaced comment.
      	* varasm.c (assemble_start_function): Use DECL_ALIGN instead of
      	FUNCTION_BOUNDARY.
      
      From-SVN: r126588
      Geoffrey Keating committed
  13. 10 Jul, 2007 1 commit
    • re PR bootstrap/32617 (explow.c references DECL_ALIGN of a FUNCTION_DECL) · 837edd5f
      2007-07-09  Geoffrey Keating  <geoffk@apple.com>
      
      	PR 32617
      	* c-common.c (c_alignof_expr): Look at DECL_ALIGN of
      	FUNCTION_DECLs.
      	(handle_aligned_attribute): Allow use on FUNCTION_DECLs.
      	* varasm.c (assemble_start_function): Honor DECL_ALIGN
      	for FUNCTION_DECLs.  Don't use align_functions_log if
      	DECL_USER_ALIGN.
      	* print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
      	even for FUNCTION_DECLs.
      	* c-decl.c (merge_decls): Propagate DECL_ALIGN even for
      	FUNCTION_DECLs.
      	* tree.h (DECL_ALIGN): Update for new location of 'align'.
      	(DECL_FUNCTION_CODE): Update for new location and name of
      	'function_code'.
      	(DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
      	(struct tree_decl_common): Move 'align' and 'off_align' out
      	of union, ensure they're still on a 32-bit boundary.  Remove
      	other fields in union 'u1'.
      	(struct tree_function_decl): Add field 'function_code' replacing
      	'u1.f' in tree_decl_common.
      	* tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
      	* doc/extend.texi (Function Attributes): Add 'aligned' attribute.
      	(Variable Attributes): Cross-reference 'aligned' attribute
      	to Function Attributes.
      	* flags.h (force_align_functions_log): Delete.
      	* toplev.c (force_align_functions_log): Delete.
      
      Index: gcc/testsuite/ChangeLog
      2007-07-09  Geoffrey Keating  <geoffk@apple.com>
      
      	PR 32617
      	* gcc.c-torture/execute/align-3.c: New.
      
      Index: gcc/java/ChangeLog
      2007-07-09  Geoffrey Keating  <geoffk@apple.com>
      
      	PR 32617
      	* lang.c (java_init): Remove setting of force_align_functions_log.
      	* class.c (add_method_1): Set DECL_ALIGN of non-static method
      	to cope with ptrmemfunc_vbit_in_pfn.
      
      Index: gcc/cp/ChangeLog
      2007-07-09  Geoffrey Keating  <geoffk@apple.com>
      
      	PR 32617
      	* decl.c (cxx_init_decl_processing): Don't set
      	force_align_functions_log.
      	(grokfndecl): Honour ptrmemfunc_vbit_in_pfn.
      	* typeck.c (cxx_alignof_expr): When alignof is used on a plain
      	FUNCTION_DECL, return its alignment.
      
      From-SVN: r126529
      Geoffrey Keating committed
  14. 16 Jun, 2007 1 commit
    • [multiple changes] · 5be014d5
      2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
                  Zdenek Dvorak <dvorakz@suse.cz>
                  Richard Guenther  <rguenther@suse.de>
                  Kaz Kojima  <kkojima@gcc.gnu.org>
      
      	* tree-vrp.c (compare_values_warnv): Convert val2 to
      	the type of val1.
      	(extract_range_from_assert): Create
      	POINTER_PLUS_EXPR for pointer types.
      	(extract_range_from_binary_expr): Handle
      	only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
      	for pointer types.
      	* doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
      	* tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
      	POINTER_PLUS_EXPR as PLUS_EXPR.
      	(number_of_iterations_lt_to_ne):
      	For pointer types, use sizetype when
      	creating MINUS_EXPR/PLUS_EXPRs.
      	(assert_loop_rolls_lt): For pointer types, use sizetype when
      	creating MINUS_EXPR/PLUS_EXPRs.
      	(number_of_iterations_le): Likewise.
      	(expand_simple_operations): POINTER_PLUS_EXPR are simple also.
      	(derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
      	like PLUS_EXPR and MINUS_EXPR.
      	* tree-pretty-print.c (dump_generic_node): Handle
      	POINTER_PLUS_EXPR.
      	(op_prio): Likewise.
      	(op_symbol_1): Likewise.
      	* optabs.c (optab_for_tree_code): Likewise.
      	* tree-ssa-loop-manip.c (create_iv): Handle pointer base
      	specially.
      	* tree-tailcall.c (process_assignment): Mention
      	POINTER_PLUS_EXPR in a TODO comment.
      	* tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
      	MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
      	not used with a pointer and an integer type.
      	* tree-scalar-evolution.c (add_to_evolution_1): Convert the
      	increment using chrec_convert_rhs instead of chrec_convert.
      	(follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
      	PLUS_EXPR except for the right hand side's type will be
      	sizetype.
      	(interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
      	(fold_used_pointer_cast): Kill.
      	(pointer_offset_p): Kill.
      	(fold_used_pointer): Kill.
      	(pointer_used_p): Kill.
      	(analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
      	call fold_used_pointer.
      	(instantiate_parameters_1): Convert the increment
      	using chrec_convert_rhs instead of chrec_convert.
      	Handle POINTER_PLUS_EXPR as PLUS_EXPR.
      	* builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
      	instead of PLUS_EXPR.
      	(expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
      	PLUS_EXPR for pointers.
      	(std_gimplify_va_arg_expr): Likewise.
      	(fold_builtin_memory_op): Likewise.
      	(fold_builtin_strstr): Likewise.
      	(fold_builtin_strchr): Likewise.
      	(fold_builtin_strrchr): Likewise.
      	(fold_builtin_strpbrk): Likewise.
      	(expand_builtin_memory_chk): Likewise.
      	(fold_builtin_memory_chk): Likewise.
      	(std_expand_builtin_va_start): Use
      	sizetype for the call to make_tree and then convert
      	to the pointer type.
      	(fold_builtin_memchr): Use POINTER_PLUS_EXPR
      	instead of PLUS_EXPR for adding to a pointer.
      	(std_gimplify_va_arg_expr): Use fold_build2 for
      	the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
      	the operands to sizetype first and then cast the BIT_AND_EXPR
      	back to the pointer type.
      	* fold-const.c (build_range_check): Handle pointer types
      	specially.
      	(extract_array_ref): Look for POINTER_PLUS_EXPR instead
      	of PLUS_EXPR's. Make sure the offset is converted to
      	sizetype.
      	(try_move_mult_to_index): Strip the NOPs from the offset.
      	Remove code argument and replace all uses with PLUS_EXPR.
      	(fold_to_nonsharp_ineq_using_bound): Handle pointer types
      	specially. Don't use a pointer type for MINUS_EXPR.
      	(fold_unary): Handle for (T1)(X op Y),
      	only p+ as that is the only as that can be handled for
      	binary operators now.
      	(fold_binary <case POINTER_PLUS_EXPR>): Add folding of
      	POINTER_PLUS_EXPR.
      	<case PLUS_EXPR>: Add folding of PTR+INT into
      	PTR p+ INT.
      	Don't call try_move_mult_to_index.
      	<case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
      	into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
      	(PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
      	Don't call try_move_mult_to_index.
      	(tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
      	(tree_expr_nonzero_p): Likewise.
      	(fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
      	of PLUS_EXPR for the complex expression folding.
      	* tree-chrec.c (chrec_fold_plus_poly_poly): If the
      	first chrec is a pointer type, then the second should
      	be sizetype and not the first's type.
      	For POINTER_PLUS_EXPR, use a different right hand side type.
      	Handle POINTER_PLUS_EXPR like PLUS_EXPR.
      	(chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
      	different right hand side type.
      	Handle POINTER_PLUS_EXPR like PLUS_EXPR.
      	(chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
      	instead of PLUS_EXPR.
      	When either operand is zero, convert the other operand.
      	(chrec_apply): Use chrec_convert_rhs
      	on the argument x instead of chrec_convert.
      	(reset_evolution_in_loop): For pointer types, the new_evol
      	should be sizetype.
      	(convert_affine_scev): For POINTER_PLUS_EXPR, use a
      	different right hand side type.
      	Handle POINTER_PLUS_EXPR like PLUS_EXPR.
      	(chrec_convert_rhs): New function.
      	(chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
      	different right hand side type.
      	Handle POINTER_PLUS_EXPR like PLUS_EXPR.
      	* tree-chrec.h (chrec_convert_rhs): New prototype.
      	(build_polynomial_chrec): For pointer types, the right hand
      	* tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
      	POINTER_PLUS_EXPR instead of PLUS_EXPR's.
      	Remove subtraction case as it is always addition now.
      	Make sure the offset is converted to sizetype.
      	(fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
      	Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
      	* tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
      	PLUS_EXPR in pointer type.
      	Handle POINTER_PLUS_EXPR.
      	(tree_to_aff_combination): Likewise.
      	(force_expr_to_var_cost): Likewise.
      	(force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
      	instead of PLUS_EXPR for pointers.
      	* c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
      	instead of PLUS_EXPR of pointer types.
      	* tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
      	as PLUS_EXPR.
      	(check_va_list_escapes): Likewise.
      	(check_all_va_list_escapes): Likewise.
      	* dwarf2out.c (loc_descriptor_from_tree_1):
      	Handle POINT_PLUS_EXPR as a PLUS_EXPR.
      	* expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
      	(string_constant): Likewise.
      	* tree-ssa-address.c (tree_mem_ref_addr): When adding
      	the offset to the base, use POINTER_PLUS_EXPR.
      	(add_to_parts): Convert the index to sizetype.
      	(create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
      	* matrix-reorg.c (collect_data_for_malloc_call): Stmt
      	will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
      	Offset only holds something for PLUS_EXPR.
      	(ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
      	a PLUS_EXPR.
      	(analyze_transpose): POINTER_PLUS_EXPR will only show up now
      	and not PLUS_EXPR.
      	(analyze_accesses_for_modify_stmt): Likewise.
      	Remove comment about the type being integral type as it is
      	wrong now.
      	(can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
      	PLUS_EXPR.
      	(transform_access_sites): POINTER_PLUS_EXPR will only show up now
      	and not PLUS_EXPR.
      	Correct the type which the artimentic is done in (is now
      	sizetype).
      	Reindent one loop.
      	* tree-data-ref.c (split_constant_offset): Handle
      	POINTER_PLUS_EXPR
      	* tree-affine.c (tree_to_aff_combination): Likewise.
      	* c-typeck.c (build_unary_op): For pointers create the increment
      	as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
      	for pointers.
      	* gimplify.c (gimplify_self_mod_expr): Create a
      	POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
      	(gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
      	* tree.def (POINTER_PLUS_EXPR): New tree code.
      	* tree-predcom.c (ref_at_iteration): If we have a pointer
      	type do the multiplication in sizetype.
      	* tree-mudflap.c (mf_xform_derefs_1): Create a
      	POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
      	* tree-ssa-forwprop.c 
      	(forward_propagate_addr_into_variable_array_index):
      	Don't expect there to be a cast for the index as that
      	does not exist anymore.
      	(forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
      	instead of PLUS_EXPR.
      	Don't check for the first operand of the POINTER_PLUS_EXPR
      	was the index as it cannot be.
      	Call forward_propagate_addr_into_variable_array_index with
      	the SSA_NAME instead of the statement.
      	* varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
      	(compare_constant): Likewise.
      	(copy_constant): Likewise.
      	(compute_reloc_for_constant): Likewise.
      	(output_addressed_constants): Likewise.
      	(initializer_constant_valid_p): Likewise.
      	* tree-ssa.c (tree_ssa_useless_type_conversion_1):
      	Convert the MIN/MAX of the inner type to the outer
      	type before comparing them.
      	* tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
      	POINTER_PLUS_EXPR instead of PLUS_EXPR.
      	(issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
      	of PLUS_EXPR for pointers.
      	* tree-inline.c (estimate_num_insns_1): Handle
      	POINTER_PLUS_EXPR.
      	* tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
      	Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
      	(bump_vector_ptr): Create a POINTER_PLUS_EXPR
      	instead of PLUS_EXPR for the pointer increment statement.
      	(vect_update_ivs_after_vectorizer): For pointer types, create
      	POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
      	MULT_EXPR in sizetype.
      	(vect_gen_niters_for_prolog_loop): Add a cast when creating
      	byte_misalign.
      	* tree-object-size.c (plus_expr_object_size): Handle
      	POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
      	code which is trying to figure out which side is a pointer and 
      	is the index.
      	(check_for_plus_in_loops_1): Likewise.
      	(check_for_plus_in_loops): Likewise.
      	* c-common.c (pointer_int_sum): Create a
      	POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
      	* tree-ssa-structalias.c (handle_ptr_arith): Handle
      	only POINTER_PLUS_EXPR.  Removing all the extra
      	code which is trying to figure out which side is a pointer and 
      	is the index.
      	* tree-cfg.c (verify_expr): Add extra checking for pointers and
      	PLUS_EXPR and MINUS_EXPR.
      	Also add checking to make sure the operands of POINTER_PLUS_EXPR
      	are correct.
      	* config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
      	with make_tree, instead of a pointer type.
      	* config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
      	for pointers instead of PLUS_EXPR.
      	(s390_gimplify_va_arg): Likewise.
      	* config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
      	instead of PLUS_EXPR when doing addition on pointer
      	types.  Use sizetype for the second operand.
      	(spu_gimplify_va_arg_expr): Likewise.
      	* config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
      	POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
      	a pointer.  Don't create a BIT_AND_EXPR for pointer types.
      	* config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
      	for the pointer addition and also use size_int/sizetype
      	for the offset.
      	(ix86_gimplify_va_arg): Likewise.
      	Perform BIT_AND_EXPR on sizetype arguments.
      	* config/sh/sh.c (sh_va_start): Call make_tree with sizetype
      	and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
      	for the pointer additions and also use size_int for the offsets.
      	(sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
      	additions and also use size_int for the offsets.  Perform
      	BIT_AND_EXPR on sizetype arguments.
      	* config/ia64/ia64.c (ia64_gimplify_va_arg): Use
      	POINTER_PLUS_EXPR for pointers and create the
      	BIT_AND_EXPR in sizetype.
      	* config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
      	instead of PLUS_EXPR for pointer addition.
      	(rs6000_va_start): Likewise.
      	Also use sizetype for the offset.
      	* config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
      	as PLUS_EXPR/MINUS_EXPR.
      	(hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
      	PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
      	Don't use BIT_AND_EXPR on a pointer type, convert the
      	expression to sizetype first.
      	* config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
      	for pointers.
      	(mips_gimplify_va_arg_expr): Likewise.
      	Don't create BIT_AND_EXPR in a pointer type.
      
      
      
      2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
      
              * trans-intrinsic.c (gfc_conv_intrinsic_repeat): Use
              POINTER_PLUS_EXPR instead of PLUS_EXPR for pointer addition.
              * trans-expr.c (gfc_trans_string_copy): Create
              POINTER_PLUS_EXPR instead of a PLUS_EXPR
              for pointer types.
      
      2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
      
      	* typeck.c (build_binary_op): For templates build the
      	expression in pieces to avoid the assert in build2_stat.
      	(get_member_function_from_ptrfunc):
      	Change over to using POINTER_PLUS_EXPR and convert
      	the second operand to sizetype.
      	* typeck2.c (build_m_component_ref):  Likewise.
      	* init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
      	instead of PLUS_EXPR for pointers.
      	(build_new_1): Likewise.
      	(build_vec_delete_1): Likewise.
      	(build_vec_delete): Likewise.
      	* class.c (build_base_path): Likewise.
      	(build_base_path): Likewise.
      	(convert_to_base_statically): Likewise.
      	(fixed_type_or_null): Handle POINTER_PLUS_EXPR.
      	(get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
      	instead of PLUS_EXPR.
      	(dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
      	instead of PLUS_EXPR for pointers.
      	* call.c (build_special_member_call): Likewise.
      	* rtti.c (build_headof): Likewise.
      	Use sizetype instead of ptrdiff_type_node.
      	(tinfo_base_init): Create a POINTER_PLUS_EXPR
      	instead of PLUS_EXPR for pointers.
      	* except.c (expand_start_catch_block):  Do a
      	NEGATIVE and then a POINTER_PLUS_EXPR instead
      	of a MINUS_EXPR.
      	* cp-gimplify.c (cxx_omp_clause_apply_fn): Convert
      	PLUS_EXPR on pointer types over to use
      	POINTER_PLUS_EXPR and remove the conversion
      	to the pointer types.
      	* method.c (thunk_adjust): Use POINTER_PLUS_EXPR for
      	adding to a pointer type. Use size_int instead of
      	ssize_int. Convert the index to sizetype before
      	adding it to the pointer.
      
      
      
      2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
      
              * trans.c (Attribute_to_gnu): When subtracting an
              offset from a pointer, use POINTER_PLUS_EXPR with
              NEGATE_EXPR instead of MINUS_EXPR.
              (gnat_to_gnu): Likewise.
              * utils.c (convert): When converting between
              thin pointers, use POINTER_PLUS_EXPR and sizetype
              for the offset.
              * utils2.c (known_alignment): POINTER_PLUS_EXPR
              have the same semantics as PLUS_EXPR for alignment.
              (build_binary_op): Add support for the semantics of
              POINTER_PLUS_EXPR's operands.
              When adding an offset to a pointer, use POINTER_PLUS_EXPR.
      
      
      
      2007-06-15 Andrew Pinski  <andrew_pinski@playstation.sony.com>
      
              * class.c (make_class_data): Build the index in sizetype.
              Use POINTER_PLUS_EXPR instead of PLUS_EXPR when
              adding to a pointer type.
              (build_symbol_entry): Likewise.
              * expr.c (build_java_arrayaccess): Likewise.
              (build_field_ref): Likewise.
              (build_known_method_ref): Likewise.
              (build_invokevirtual): Likewise.
              * except.c (build_exception_object_ref): Do a
              NEGATIVE and then a POINTER_PLUS_EXPR instead
              of a MINUS_EXPR.
      
      
      2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
      
      	PR tree-opt/32225
      	* gcc.c-torture/compile/20070605-1.c: New test.
      
      	* gcc.c-torture/compile/20070603-1.c: New testcase.
      	* gcc.c-torture/compile/20070603-2.c: New testcase.
      
      	* gcc.c-torture/compile/20070531-1.c: New test.
      
      	PR tree-opt/32167
      	* gcc.c-torture/compile/20070531-2.c: New test.
      
      	PR tree-opt/32144
      	* gcc.c-torture/compile/20070529-1.c: New test.
      
      	PR tree-opt/32145
      	* gcc.c-torture/compile/20070529-2.c: New test.
      
      	PR tree-opt/32015
      	* gcc.c-torture/compile/20070520-1.c: New test.
      
      	* g++.dg/ext/java-1.C: New test.
      
      	* gcc.dg/vect/vect-106.c: We are now able to vectorize two
      	loops instead of one. Remove the "can't determine dependence"
      	check.
      	* gcc.dg/tree-ssa/20030815-1.c: Remove testcase which is no longer
      	needed as the cast is gone in the first place.
      	* gcc.dg/max-1.c: Change local variable a to be a global one.
      	* gcc.dg/tree-ssa/ssa-pre-8.c: Update testcase since we don't
      	have a cast which is PREd.
      
      From-SVN: r125755
      Andrew Pinski committed
  15. 21 May, 2007 1 commit
    • gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of NOTE_LINE_NUMBER... · a38e7aa5
      	* gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
      	NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
      	* ddg.c (create_ddg): LIkewise.
      	* final.c (final): Remove hunk moving line numbernotes around since
      	they are no longer present at this stage.
      	(final_scan_insn): Use NOTE_KIND instead of
      	NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
      	(output_asm_label): Likewise.
      	* reorg.c (dbr_schedule): Likewise.
      	* haifa-sched.c (unlink_other_notes): Likewise.
      	* mode-switching.c (optimize_mode_switching): Likewise.
      	* graph.c (start_bb): Likewise.
      	* rtl.def (NOTE): Update description.
      	* jump.c (squeeze_notes): Delete.
      	(mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
      	NOTE_INSN_BASIC_BLOCK_P when possible.
      	* ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
      	* dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
              NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
      	(dwarf2out_var_location): Likewise.
      	* cfgbuild.c (make_edges): Likewise.
      	(find_basic_blocks_1): Likewise.
      	* function.c (reorder_blocks_1): Likewise.
      	(epilogue_done): Likewise.
      	(reposition_prologue_and_epilogue_notes): Likewise.
      	* print-rtl.c (print_rtx): Likewise; drop code for printing line number
      	notes.
      	(print_rtl): Likewise.
      	(print_rtl_single): Likewise.
      	* gcse.c (insert_insn_start_bb): Likewise.
      	* alias.c (init_alias_analysis): Likewise.
      	* calls.c (fixup_tail_calls): Likewise.
      	* except.c (sjlj_emit_function_enter): Likewise.
      	* emit-rtl.c (add_insn_after): Likeiwse.
      	(emit_label_before): Likewise.
      	(emit_label_after): Likewise.
      	(emit_note_before, emit_note_after, emit_note): Update
      	parameter to be enum insn_note; do not deal with source
      	files.
      	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
      	Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
      	when possible.
      	(merge_blocks_move_successor_nojumps): Simplify now when
      	we don't have BLOCK notes.
      	(try_optimize_cfg): Likewise.
      	* cfglayout.c (skip_insns_after_block): Likewise.
      	(record_effective_endpoints): Likewise.
      	(duplicate_insn_chain): Likewise.
      	* varasm.c (output_constant_pool_1): Likewise.
      	* sched-deps.c (sched_analyze): Likewise.
      	* rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
      	Exterminate.
      	(note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
      	* rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
      	(SET_INSN_DELETED): Simplify.
      	(NOTE_LINE_NUMBER): Exterminate.
      	(NOTE_LINE_KIND): New.
      	(NOTE_INSN_BASIC_BLOCK_P): Update.
      	(enum insn_note): Simplify.
      	(GET_NOTE_INSN_NAME) Simplify.
      	(emit_note_before, emit_note_after, emit_note): Update prototype.
      	(squeeze_notes): Remove.
      	* sched-int.h (NOTE_NOT_BB_P): Update.
      	* resource.c (mark_target_live_regs): Update.
      	* sched-rgn.c (debug_dependencies): Update.
      	* sched-vis.c (print_insn): Update.
      	* config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
      	* config/i386/i386.c (ix86_output_function_epilogue): Update.
      	* config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
      	(TARGET_ADJUST_UNROLL_MAX): Likewise.
      	(split_branches): Update.
      	(sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
      	4.0.0.
      	(sh_adjust_unroll_max): Exterminate.
      	* config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
      	* config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
      	(m68hc11_reorg): Likewise.
      	* config/ia64/ia64.c (emit_insn_group_barriers): Update.
      	(emit_predicate_relation_info): Update.
      	(process_for_unwind_directive): Update.
      	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
      	(output_call): Update.
      	* config/pa/pa.c (output_lbranch): Update.
      	(output_millicode_call): Update.
      	(output_call): Update.
      	(pa_combine_instructions): Update.
      	* config/mips/mips.c (mips16_gp_pseudo_reg): Update.
      	* config/bfin/bfin.c (gen_one_bundle): Update.
      	* cfgrtl.c (can_delete_note_p): Update.
      	(delete_insn): Update.
      	(rtl_merge_blocks): Update.
      	(commit_one_edge_insertion): Update.
      	(rtl_verify_flow_info): Update.
      	* stmt.c (expand_case): Do not call squeeze_notes.
      
      From-SVN: r124895
      Jan Hubicka committed
  16. 04 May, 2007 1 commit
  17. 08 Apr, 2007 1 commit
  18. 29 Mar, 2007 1 commit
    • varasm.c (initializer_constant_valid_p): Don't deny DECL_DLLIMPORT_P on functions. · da489f73
      	* varasm.c (initializer_constant_valid_p): Don't deny
      	DECL_DLLIMPORT_P on functions.
      
      	* config/i386/cygming.h: Remove function declarations.
      	(SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
      	(ASM_OUTPUT_LABELREF): Remove.
      	(COMMON_ASM_OP): Remove.
      	(ASM_OUTPUT_COMMON): Remove.
      	(ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
      	(ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
      	(ASM_DECLARE_FUNCTION_NAME): Likewise.
      	* config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
      	Rename from TARGET_ENCODE_SECTION_INFO.
      	* config/i386/netware.h: Likewise.
      	* config/i386/i386-protos.h: Update.
      	* config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
      	of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
      	(legitimate_constant_p): Reject dllimports.
      	(dllimport_map, get_dllimport_decl): New.
      	(legitimize_dllimport_symbol): New.
      	(legitimize_address, ix86_expand_move): Use it.
      	(TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
      	* config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
      	(SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
      	(SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
      	* config/i386/predicates.md (constant_call_address_operand): Only
      	accept symbols; reject dllimport_p symbols.
      	* config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
      	i386_pe_maybe_record_exported_symbol.
      	* config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
      	(i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
      	(i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
      	trust the setting of DECL_DLLIMPORT_P.
      	(i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
      	(i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
      	(gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
      	tidy the argument scanning loop.
      	(i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
      	SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
      	(i386_pe_strip_name_encoding): Remove.
      	(i386_pe_binds_local_p): New.
      	(i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
      	(i386_pe_output_labelref): Remove.
      	(i386_pe_asm_output_aligned_decl_common): New.
      	(i386_pe_maybe_record_exported_symbol): Rename from
      	i386_pe_record_exported_symbol; check for dllexported symbols.
      
      From-SVN: r123344
      Richard Henderson committed
  19. 10 Mar, 2007 1 commit
    • re PR target/26090 (IA-64 creates DT_TEXTREL binaries) · 9b580a0b
              PR target/26090
      	* target.h (targetm.asm.out.reloc_rw_mask): New.
      	* target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
      	(TARGET_ASM_OUT): Use it.
      	* targhooks.c, targhooks.h (default_reloc_rw_mask): New.
      	* varasm.c (categorize_decl_for_section): Remove shlib argument;
      	use the new reloc_rw_mask target hook instead.
      	(default_section_type_flags_1): Merge into...
      	(default_section_type_flags): ... here.
      	(decl_readonly_section_1): Merge into...
      	(decl_readonly_section): ... here.
      	(default_elf_select_section_1): Merge into...
      	(default_elf_select_section): ... here.
      	(default_unique_section_1): Merge into...
      	(default_unique_section): ... here.
      	(compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
      	(default_select_rtx_section): Use it.
      	(default_elf_select_rtx_section): Likewise.
      	* output.h: Update to match.
      	* doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
      	* config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
      	(TARGET_ASM_RELOC_RW_MASK): New.
      	* config/i386/i386.c (x86_64_elf_select_section): Adjust call
      	to categorize_decl_for_section.
      	(x86_64_elf_unique_section): Likewise.
      	* config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
      	TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
      	(TARGET_ASM_RELOC_RW_MASK): New.
      	* config/ia64/ia64.c (ia64_rwreloc_select_section,
      	ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
      	(ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
      	(TARGET_RWRELOC): Remove.
      	(ia64_section_type_flags): Adjust call to default_section_type_flags.
      	* config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
      	* config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
      	(rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
      	(rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
      	(rs6000_xcoff_select_section): Use decl_readonly_section.
      	(rs6000_xcoff_section_type_flags): Use default_section_type_flags.
      	* config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
      	(TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
      	(TARGET_SECTION_TYPE_FLAGS): Remove.
      	* config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
      
      From-SVN: r122781
      Richard Henderson committed
  20. 09 Mar, 2007 1 commit
  21. 26 Feb, 2007 1 commit
    • output.h (assemble_addr_to_section): Declare. · b2f4bed8
      	* output.h (assemble_addr_to_section): Declare.
      	(get_cdtor_priority_section): Likewise.
      	* varasm.c (assemble_addr_to_section): New function.
      	(get_cdtor_priority_section): Likewise.
      	(default_named_section_asm_out_destructor): Use them.
      	(destor_dtor_section_asm_out_destructor): Likewise.
      	(default_named_section_asm_out_constructor): Likewise.
      	(default_ctor_section_asm_out_constructor): Likewise.
      	* config.gcc (*-*-vxworks*): Include vxworks.o.
      	* config/t-vxworks (vxworks.o): New target.
      	* config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
      	(TARGET_ASM_CONSTRUCTOR): Define.
      	(TARGET_ASM_DESTRUCTOR): Likewise.
      	(vxworks_asm_out_constructor): Declare.
      	(vxworks_asm_out_destructor): Likewise.
      
      	* c-common.c (get_priority): Check that we have not just an
      	INTEGER_CST, but an integer constant with integeral type.
      
      	* gcc.dg/vxworks/vxworks.exp: New file.
      	* gcc.dg/vxworks/initpri1.c: Likewise.
      	* gcc.dg/vxworks/initpri2.c: Likewise.
      	* gcc.dg/initpri2.c: Add more tests.
      	* g++.dg/special/initpri2.C: Likewise.
      
      From-SVN: r122335
      Mark Mitchell committed
  22. 25 Feb, 2007 1 commit
    • extend.texi: Document optional priority argument to constructors and destructors. · fc8600f9
      	* doc/extend.texi: Document optional priority argument to
      	constructors and destructors.
      	* tree.c (init_priority_for_decl): Adjust GTY markers.
      	(init_ttree): Use priority-info hash functions for
      	init_priority_for_decl.
      	(tree_map_eq): Rename to ...
      	(tree_map_base_eq): ... this.
      	(tree_map_marked_p): Rename to ...
      	(tree_map_base_marked_p): ... this.
      	(tree_map_base_hash): New function.
      	(decl_init_priority_lookup): Rework.
      	(decl_fini_priority_lookup): New function.
      	(decl_priority_info): New function.
      	(decl_init_priority_insert): Use it.
      	(decl_fini_priority_insert): Likewise.
      	(decl_restrict_base_lookup): Adjust for refactoring of tree_map
      	hierarchy.
      	(decl_restrict_base_insert): Likewise.
      	(decl_debug_expr_insert): Likewise.
      	(decl_value_expr_lookup): Likewise.
      	(decl_value_expr_insert): Likewise.
      	* tree.h (priority_type): New type.
      	(decl_init_priority_lookup): Use priority_type.
      	(decl_fini_priority_lookup): New function.
      	(decl_init_priority_insert): Use priority_type.
      	(decl_fini_priority_insert): New function.
      	(DECL_HAS_INIT_PRIORITY): Tweak comments.
      	(DECL_INIT_PRIORITY): Likewise.
      	(SET_DECL_INIT_PRIORITY): Add comment.
      	(DECL_FINI_PRIORITY): New macro.
      	(SET_DECL_FINI_PRIORITY): Likewise.
      	(DEFAULT_INIT_PRIORITY): Document.
      	(MAX_INIT_PRIORITY): Likewise.
      	(MAX_RESERVED_INIT_PRIORITY): Likewise.
      	(tree_map_base): New type.
      	(tree_map_base_eq): New function.
      	(tree_map_base_hash): Likewise.
      	(tree_map_base_marked_p): Likewise.
      	(tree_map): Inherit from tree_map_base.
      	(tree_map_eq): Make it a macro.
      	(tree_map_marked_p): Likewise.
      	(tree_int_map): Inherit from tree_map_base.
      	(tree_int_map_eq): Make it a macro.
      	(tree_int_map_hash): Likewise.
      	(tree_int_map_marked_p): Likewise.
      	(tree_priority_map): New type.
      	(tree_priority_map_eq): New macro.
      	(tree_priority_map_hash): Likewise.
      	(tree_priority_map_marked_p): Likewise.
      	* varasm.c (emults_decl): Adjust for refactoring of tree_map
      	hierarchy.
      	(emutls_common_1): Likewise.
      	* lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
      	* tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
      	of tree_map hierarchy.
      	* tree-cfg.c (move_stmt_r): Likewise.
      	(new_label_mapper): Likewise.
      	* c-tree.h (c_expand_body): Move to ...
      	* c-common.h (c_expand_body): ... here.
      	* c-decl.c (c_expand_body): Move to ...
      	* c-common.c (c_expand_body): ... here.
      	(c_common_attribute_table): Allow 1 argument for the constructor
      	and destructor attributes.
      	(get_priority): New function.
      	(handle_constructor_attribute): Set DECL_INIT_PRIORITY.
      	(handle_destructor_attribute): Set DECL_FINI_PRIORITY.
      
      	* cp-tree.h (static_ctors): Remove.
      	* cp-tree.h (static_dtors): Likewise.
      	* cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
      	refactoring of tree_map hierarchy.
      	(decl_shadowed_for_var_insert): Likewise.
      	* semantics.c (expand_body): Use c_expand_body.
      	(expand_or_defer_fn): Don't update static_ctors or static_dtors.
      	* decl2.c (static_ctors): Remove.
      	(static_dtors): Likewise.
      	(generate_ctor_or_dtor_function): Pass NULL_TREE to
      	objc_generate_static_init_call.  Do not call static_[cd]tors.
      	(generate_ctor_and_dtor_functions_for_priority): Do not check for
      	static_[cd]tors.
      	(cp_write_global_declarations): Likewise.
      
      	* decl.c (annotate_value): Adjust for refactoring of tree_map
      	hierarchy.
      
      	* gcc.dg/initpri1.c: New test.
      	* gcc.dg/initpri2.c: Likewise.
      	* g++.dg/special/initpri1.C: New test.
      	* g++.dg/special/initpri2.C: Likewise.
      	* g++.dg/special/conpr-1.C: Use init_priority effective target.
      	* g++.dg/special/conpr-2.C: Likewise.
      	* g++.dg/special/conpr-3.C: Likewise.
      	* g++.dg/special/conpr-4.C: Likewise.
      	* g++.dg/special/initp1.C: Likewise.
      	* g++.dg/special/ecos.exp: Remove code to detect availability of
      	constructor priorities.
      	* lib/target-support.exp (target_init_priority): New function.
      
      From-SVN: r122315
      Mark Mitchell committed
  23. 20 Feb, 2007 1 commit
  24. 15 Feb, 2007 1 commit
  25. 10 Feb, 2007 1 commit
    • Makefile.in (libgcc-support, [...]): Add emutls.c. · 8893239d
      gcc/ChangeLog:
      * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
      * builtin-types.def (BT_WORD): Make unsigned.
      (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
      * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
      (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
      * c-decl.c (grokdeclarator): Don't error if !have_tls.
      * c-parser.c (c_parser_omp_threadprivate): Likewise.
      * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
      emulated tls.
      * expr.c (emutls_var_address): New.
      (expand_expr_real_1): Expand emulated tls.
      (expand_expr_addr_expr_1): Likewise.
      * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
      * output.h (emutls_finish): Declare.
      * toplev.c (compile_file): Call it.
      * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
      address before wrapping in CONST.
      * varasm.c (emutls_htab, emutls_object_type): New.
      (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
      (get_emutls_object_name, get_emutls_object_type): New.
      (get_emutls_init_templ_addr, emutls_decl): New.
      (emutls_common_1, emutls_finish): New.
      (assemble_variable): When emulating tls, swap decls; generate
      constructor for the emutls objects.
      (do_assemble_alias): When emulating tls, swap decl and target name.
      (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
      for emulated tls.
      * varpool.c (decide_is_variable_needed): Look at force_output.
      Recurse for emulated tls.
      (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
      with decide_is_variable_needed.
      * emutls.c: New file.
      * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
      tls_object for real tls.
      gcc/cp/ChangeLog:
      * decl.c (grokvardecl): Don't error if !have_tls.
      (grokdeclarator): Likewise.
      * parser.c (cp_parser_omp_threadprivate): Likewise.
      gcc/fortran/ChangeLog:
      * f95-lang.c (gfc_init_builtin_functions): Add __emutls_get_address
      and __emutls_register_common.
      * openmp.c (gfc_match_omp_threadprivate): Don't error if !have_tls.
      * trans-common.c (build_common_decl): Don't check have_tls.
      * trans-decl.c (gfc_finish_var_decl): Likewise.
      * types.def (BT_WORD, BT_FN_PTR_PTR): New.
      (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
      gcc/testsuite/ChangeLog:
      * lib/target-supports.exp (check_effective_target_tls): Redefine
      to mean non-emulated tls.
      * gcc.dg/tls/alias-1.c: Remove tls requirement.
      * gcc.dg/tls/asm-1.c, gcc.dg/tls/debug-1.c, gcc.dg/tls/diag-1.c,
      gcc.dg/tls/diag-2.c, gcc.dg/tls/diag-3.c, gcc.dg/tls/diag-4.c,
      gcc.dg/tls/diag-5.c, gcc.dg/tls/init-1.c, gcc.dg/tls/nonpic-1.c,
      gcc.dg/tls/opt-10.c, gcc.dg/tls/opt-5.c, gcc.dg/tls/opt-6.c,
      gcc.dg/tls/opt-8.c, gcc.dg/tls/opt-9.c, gcc.dg/tls/pic-1.c,
      gcc.dg/tls/struct-1.c, gcc.dg/tls/trivial.c: Likewise.
      
      From-SVN: r121800
      Richard Henderson committed
  26. 03 Feb, 2007 1 commit
  27. 24 Jan, 2007 1 commit
    • target.h (globalize_decl_name): New. · 812b587e
      	* target.h (globalize_decl_name): New.
      	* target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
      	* output.h (default_globalize_decl_name): New.
      	* varasm.c (asm_output_bss): Use globalize_decl_name instead of
      	globalize_label.
              (globalize_decl): Ditto.
      	(default_globalize_decl_name): New.
      	* config/ia64/ia64.c (ia64_globalize_decl_name): New.
      	(ia64_handle_version_id_attribute): New.
      	(TARGET_ASM_GLOBALIZE_DECL_NAME): New.
      	(ia64_asm_output_external): Use globalize_decl_name instead
      	of globalize_label.
      	* doc/extend.texi (version_id): New pragma.
      	* doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
      
      From-SVN: r121128
      Steve Ellcey committed
  28. 19 Jan, 2007 1 commit
  29. 12 Dec, 2006 1 commit
    • re PR middle-end/17982 (stop calling assemble_external before final assembly output time) · c47c29c8
      2006-12-11  H.J. Lu  <hongjiu.lu@intel.com>
      
      	PR middle-end/17982
      	PR middle-end/20218
      	* cgraphunit.c (cgraph_optimize): Remove call to
      	process_pending_assemble_externals.
      
      	* config/elfos.h (ASM_OUTPUT_EXTERNAL): New.
      
      	* config/ia64/hpux.h (TARGET_ASM_FILE_END): Removed.
      
      	* config/ia64/ia64.c (ia64_asm_output_external): Rewritten.
      	(ia64_hpux_add_extern_decl): Removed.
      	(ia64_hpux_file_end): Likewise.
      	(extern_func_list): Likewise.
      	(extern_func_head): Likewise.
      
      	* output.h (assemble_external): Update comments.
      	(default_elf_asm_output_external): New.
      	(maybe_assemble_visibility): New.
      
      	* toplev.c (compile_file): Update comment.
      
      	* varasm.c (assemble_external): Always put it on
      	pending_assemble_externals.
      	(maybe_assemble_visibility): Make it extern and return int.
      	(default_elf_asm_output_external): New.
      
      From-SVN: r119764
      H.J. Lu committed
  30. 11 Dec, 2006 2 commits
    • varasm.c (elf_record_gcc_switches): Cast second argument of ASM_OUTPUT_SKIP to… · 86aa5312
      varasm.c (elf_record_gcc_switches): Cast second argument of ASM_OUTPUT_SKIP to unsigned HOST_WIDE_INT.
      
      	* varasm.c (elf_record_gcc_switches): Cast second argument of
      	ASM_OUTPUT_SKIP to unsigned HOST_WIDE_INT.
      
      From-SVN: r119744
      Andreas Schwab committed
    • Move all varpool routines out of cgraph/cgraphunit to varpool.c · 8a4a83ed
      	Move all varpool routines out of cgraph/cgraphunit to varpool.c
      	* cgraph.c: Update comments.
      	(cgraph_varpool_hash,
      	cgraph_varpool_nodes, cgraph_varpool_last_needed_node
      	cgraph_varpool_node_name, cgraph_varpool_node,
      	cgraph_varpol_mode_for_asm, cgraph_varpool_mark_needed_node,
      	cgraph_variable_initializer_availability): Move to
      	varpool.c and drop cgraph_ prefixes.
      	(cgraph_varpool_enqueue_needed_node, cgraph_varpool_reset_queue,
      	cgraph_varpool_first_unanalyzed_node, cgraph_varpool_finalize_decl):
      	move to varpool.c; drop cgraph_ prefix; make static.
      	(dump_cgraph_varpool_node): Move to varpool.c under name
      	dump_varpool_node.
      	(dump_varpool, hash_varpool_node, eq_varpool_node,
      	decide_is_variable_needed): Move to varpool.c
      	(decl_assembler_name_equal): Move to tree.c.
      	(availability_names): Rename to ...
      	(cgraph_availability_names): ... this one.
      	(dump_cgraph_node): Update.
      	* cgraph.h: Reorder declarations now in varpool.c
      	(cgraph_vailablity_names): Declare.
      	(struct cgraph_varpool_node): Rename to ...
      	(struct varpool_node): ... this one.
      	(cgraph_varpool_first_unanalyzed_node, cgraph_varpool_nodes_queue,
      	cgraph_varpool_first_unanalyzed_node, cgraph_varpool_node,
      	cgraph_varpool_node_for_asm, cgraph_varpool_mark_needed_node,
      	cgraph_varpool_finalize_decl, cgraph_varpool_enqueue_needed_node,
      	cgraph_varpool_reset_queue, cgraph_varpool_assemble_pending_decls,
      	cgraph_variable_initializer_availability): Rename to ...
      	(varpool_first_unanalyzed_node, varpool_nodes_queue,
      	varpool_first_unanalyzed_node, varpool_node,
      	varpool_node_for_asm, varpool_mark_needed_node,
      	varpool_finalize_decl, varpool_enqueue_needed_node,
      	varpool_assemble_pending_decls, variable_initializer_availability):
      	Rename to ...
      	* tree.c (decl_assembler_name_equal): Move here from cgraph.c.
      	* tree.h (decl_assembler_name_equal): Declare.
      	* omp-low.c (lower_omp_critical): Update.
      	* ipa-reference (analyze_variable, static_execute): Likewise.
      	* toplev.c (wrapup_global_declaration_2, compile_file): Update.
      	* cgraphunit.c: Update comments.
      	(cgraph_varpool_assembled_nodes_queue): Move to varpool.c under name
      	varpool_assembled_nodes_queue.
      	(cgraph_varpool_analyze_pending_decls): Move to varpool.c under name
      	varpool_analyze_pending_decls.
      	(cgraph_varpool_remove_unreferenced_decls): Move to varpool.c under name
      	varpool_remove_unreferenced_decls.
      	(record_reference): Update.
      	(cgraph_create_edges): Update.
      	(record_referneces_in_initializer): New function.
      	(cgraph_varpool_assemble_decl): Move to varpool.c under name
      	varpool_assemble_decl; make global.
      	(cgraph_varpool_assemble_pending_decls): Move to varpool.c under name
      	varpool_assemble_pending_decls.
      	(process_function_and_variable_attributes, cgraph_finalize_compilation_unit,
      	struct cgraph_order_sort, cgraph_output_in_order,
      	cgraph_function_and_variable_invisibility, cgraph_optimize,
      	cgraph_increase_alignment): Update.
      	* dwarf2out.c (decls_for_scope): Likewise.
      	* ipa-type-escape.c (analyze_variable, type_escape_execute): Likewise.
      	* except.c (output_ttype): Likewise.
      	* varasm.c (mark_decl_referenced): Likewise.
      	(find_decl_and_mark_referenced, assemble_alias): update.
      	* Makefile.in: Add varpool.c, gt-varpool.c and remove gt-cgraphunit.c
      	* passes.c (rest_of_decl_compilation): Update.
      
      	* cp/decl2.c (var_finalized_p): Update for renamed varpool functions.
      	* fortran/f59-lang.c (gfc_expand_function): Update for renamed varpool functions.
      
      From-SVN: r119731
      Jan Hubicka committed
  31. 07 Dec, 2006 1 commit
    • common.opt (record-gcc-switches): New command line switch. · e0d9d0dd
      * common.opt (record-gcc-switches): New command line switch.
      * target.h (print_switch_type): New enum.
        (print_switch_fn_type): New typedef for a function pointer.
        (struct gcc_target): Add record_gcc_switches and record_gcc_switches_section fields.
      * target-def.h (TARGET_ASM_RECORD_GCC_SWITCHES): Provide a default definition.
        (TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Provide a default definition.
      * toplev.c (print_single_switch): Simplify by providing a pointer to function that will format and output the switch appropriately.
        (print_switch_values): Likewise.
        (print_to_asm_out_file): New function.
        (print_to_stderr): New function.
        (init_asm_output): If flag_record_gcc_switches is set then if the target supports recording the switches then emit them into the assembler output file, otherwise tell the user that the switch is not supported.
      * varasm.c (eld_record_gcc_switches): New function.  Example handler for the record_gcc_switches target hook.
      * doc/tm.texi (TARGET_ASM_RECORD_GCC_SWITCHES): Document the new target hook.
        (TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Likewise.
      * doc/invoke.texi (-frecord-gcc-switches): Document.
      
      From-SVN: r119615
      Nick Clifton committed
  32. 09 Oct, 2006 1 commit
  33. 06 Oct, 2006 1 commit
  34. 04 Oct, 2006 1 commit
    • Makefile.in (libgcc.mk, [...]): Add emutls.c. · e701a32a
      gcc/
              * Makefile.in (libgcc.mk, LIBGCC_DEPS): Add emutls.c.
              * builtin-types.def (BT_WORD): Make unsigned.
              (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
              * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
              (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
              * c-decl.c (grokdeclarator): Don't error if !have_tls.
              * c-parser.c (c_parser_omp_threadprivate): Likewise.
              * cgraph.c (decide_is_variable_needed): Look at force_output.
              Recurse for emulated tls.
              * cgraphunit.c (cgraph_varpool_remove_unreferenced_decls): Remove
              checks redundant with decide_is_variable_needed.
              (cgraph_build_static_cdtor): Do cgraph_varpool_assemble_pending_decls.
              * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
              emulated tls.
              * expr.c (emutls_var_address): New.
              (expand_expr_real_1): Expand emulated tls.
              (expand_expr_addr_expr_1): Likewise.
              * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
              * output.h (emutls_finish): Declare.
              * toplev.c (compile_file): Call it.
              * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
              address before wrapping in CONST.
              * varasm.c (emutls_htab, emutls_object_type): New.
              (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
              (get_emutls_object_name, get_emutls_object_type): New.
              (get_emutls_init_templ_addr, emutls_decl): New.
              (emutls_common_1, emutls_finish): New.
              (assemble_variable): When emulating tls, swap decls; generate
              constructor for the emutls objects.
              (do_assemble_alias): When emulating tls, swap decl and target name.
              (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
              for emulated tls.
              * emutls.c: New file.
              * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
              tls_object for real tls.
      
      gcc/cp/
              * decl.c (grokvardecl): Don't error if !have_tls.
              (grokdeclarator): Likewise.
              * parser.c (cp_parser_omp_threadprivate): Likewise.
      
      gcc/fortran/
              * f95-lang.c (gfc_init_builtin_functions): Add __emutls_get_address
              and __emutls_register_common.
              * openmp.c (gfc_match_omp_threadprivate): Don't error if !have_tls.
              * trans-common.c (build_common_decl): Don't check have_tls.
              * trans-decl.c (gfc_finish_var_decl): Likewise.
              * types.def (BT_WORD, BT_FN_PTR_PTR): New.
              (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
      
      gcc/testsuite/
              * lib/target-supports.exp (check_effective_target_tls): Redefine
              to mean non-emulated tls.
              * gcc.dg/tls/alias-1.c: Remove tls requirement.
              * gcc.dg/tls/asm-1.c, gcc.dg/tls/debug-1.c, gcc.dg/tls/diag-1.c,
              gcc.dg/tls/diag-2.c, gcc.dg/tls/diag-3.c, gcc.dg/tls/diag-4.c,
              gcc.dg/tls/diag-5.c, gcc.dg/tls/init-1.c, gcc.dg/tls/nonpic-1.c,
              gcc.dg/tls/opt-10.c, gcc.dg/tls/opt-5.c, gcc.dg/tls/opt-6.c,
              gcc.dg/tls/opt-8.c, gcc.dg/tls/opt-9.c, gcc.dg/tls/pic-1.c,
              gcc.dg/tls/struct-1.c, gcc.dg/tls/trivial.c: Likewise.
      
      From-SVN: r117440
      Richard Henderson committed
  35. 21 Sep, 2006 1 commit
  36. 08 Sep, 2006 1 commit
  37. 04 Aug, 2006 1 commit
  38. 18 Jul, 2006 1 commit
    • tree.h (categorize_ctor_elements): Adjust prototype and add descriptive comment... · fe24d485
      	* tree.h (categorize_ctor_elements): Adjust prototype and add
      	descriptive comment, both in accordance with the interface change
      	described below.
      	* varasm.c (constructor_static_from_elts_p): New function.
      	Whether a constructor node is a valid static constant initializer
      	if all its elements are.
      	(initializer_constant_valid_p) <CONSTRUCTOR value>: Use it.
      	* output.h: Declare it.	
      	* expr.c (categorize_ctor_elements_1): Return whether the constructor
      	is a valid constant initializer instead of computing the number of
      	non-constant elements.  Use constructor_static_from_elts_p for this
      	purpose.  Replace the head comment with an indication that this is a
      	helper for categorize_ctor_elements.
      	(categorize_ctor_elements): Same interface change as for the _1
      	helper.  Former head comment from this helper moved here, adjusted to
      	account for the interface changes.
      	(mostly_zeros_p): Adjust call to categorize_ctor_elements.
      	(all_zeros_p): Likewise.	
      	* gimplify.c (gimplify_init_constructor): Decide whether we can make
      	static versions of the constructor from the categorize_ctor_elements
      	return value instead of the formerly computed number of non-constant
      	elements.
      
      	* gnat.dg/outer_agg_bitfield_constructor.adb: New test.
      	* gnat.dg/nested_agg_bitfield_constructor.adb: New test.
      
      From-SVN: r115553
      Olivier Hainque committed