1. 11 Jan, 2011 1 commit
    • re PR lto/45721 (ICE: in function_and_variable_visibility, at ipa.c:673 with -flto) · 6e701822
      	PR lto/45721
      	PR lto/45375
      	* tree.h (symbol_alias_set_t): Move typedef here from varasm.c
      	(symbol_alias_set_destroy, symbol_alias_set_contains,
      	propagate_aliases_backward): Declare.
      	* lto-streamer-out.c (struct sets): New sturcture.
      	(trivally_defined_alias): New function.
      	(output_alias_pair_p): Rewrite.
      	(output_unreferenced_globals): Fix output of alias pairs.
      	(produce_symtab): Likewise.
      	* ipa.c (function_and_variable_visibility): Set weak alias destination
      	as needed in lto.
      	* varasm.c (symbol_alias_set_t): Remove.
      	(symbol_alias_set_destroy): Export.
      	(propagate_aliases_forward, propagate_aliases_backward): New functions
      	based on ...
      	(compute_visible_aliases): ... this one; remove.
      	(trivially_visible_alias): New
      	(trivially_defined_alias): New.
      	(remove_unreachable_alias_pairs): Rewrite.
      	(finish_aliases_1): Reorganize code checking if alias is defined.
      	* passes.c (rest_of_decl_compilation): Do not call assemble_alias when
      	in LTO mode.
      
      	* lto.c (partition_cgraph_node_p, partition_varpool_node_p): Weakrefs are
      	not partitioned.
      
      	* testsuite/gcc.dg/lto/pr45721_1.c: New file.
      	* testsuite/gcc.dg/lto/pr45721_0.c: New file.
      
      From-SVN: r168666
      Jan Hubicka committed
  2. 22 Dec, 2010 1 commit
    • re PR debug/46724 (Wrong debug info: Invalid variable location) · 8dcfef8f
      PR debug/46724
      * function.c (assign_parms_augmented_arg_list): Name and mark
      DECL of result address as NAMELESS rather than IGNORED.
      (assign_parms): Set DECL_VALUE_EXPR for indirect result.
      * tree.h (tree_decl_common::decl_flag_2): Document RESULT_DECL.
      (DECL_HAS_VALUE_EXPR_P): Accept RESULT_DECL.
      * dwarf2out.c (loc_list_from_tree) <RESULT_DECL>: Use
      DECL_VALUE_EXPR.
      * dbxout.c (dbxout_expand_expr) <RESULT_DECL>: Likewise.
      * var-tracking.c (vt_add_function_parameter): New, split out of...
      (vt_add_function_parameters): ... this.  Handle incoming
      pointer to hold result.
      
      From-SVN: r168160
      Alexandre Oliva committed
  3. 03 Dec, 2010 1 commit
    • tree.h (struct call_expr_arg_iterator_d): Remove GTY tag. · 1aa67003
      2010-11-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
      
      	* tree.h (struct call_expr_arg_iterator_d): Remove GTY tag.
      	(const_call_expr_arg_iterator_d): Likewise.
      	(expanded_location): Likewise.
      	* c-tree.h (struct c_arg_tag_d): Likewise.
      	* dwarf2out.c (struct cfa_loc): Likewise.
      	(struct skeleton_chain_struct): Likewise.
      	* except.c (struct ttypes_filter): Likewise.
      	* cselib.h (struct cselib_val_struct): Likewise.
      	(elt_loc_list): Likewise.
      	(elt_list): Likewise.
      	* varasm.c (struct addr_const): Likewise.
      	* tree-flow.h (struct edge_prediction): Likewise.
      	(struct int_tree_map): Likewise.
      	(struct _edge_var_map): Likewise.
      
      ada:
      
      2010-11-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
      
      	* gcc-interface/decl.c (struct subst_pair_d): Remove GTY tag.
      	(variant_desc_d): Likewise.
      
      cp:
      
      2010-11-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
      
      	* cp-tree.h (struct aggr_init_expr_arg_iterator_d): Remove GTY
      	tag.
      
      From-SVN: r167406
      Laurynas Biveinis committed
  4. 01 Dec, 2010 1 commit
    • common.opt (main_input_filename, [...]): New Variable entries. · a803773f
      	* common.opt (main_input_filename, main_input_basename,
      	main_input_baselength): New Variable entries.  From toplev.c.
      	* final.c (output_quoted_string): Move from toplev.c.
      	* output.h (output_quoted_string): Move from toplev.h.
      	* opts-global.c (read_cmdline_options): Use gcc_options pointer to
      	access main_input_filename, main_input_baselength and
      	main_input_basename.
      	* targhooks.c: Include intl.h and opts.h.
      	(option_affects_pch_p, default_get_pch_validity): Move from
      	toplev.c.
      	* targhooks.h (option_affects_pch_p, default_get_pch_validity):
      	Move from toplev.h.
      	* toplev.c (main_input_filename, main_input_basename,
      	main_input_baselength): Move to common.opt.
      	(output_quoted_string): Move to final.c.
      	(warn_deprecated_use): Move to tree.c.
      	(option_affects_pch_p, default_get_pch_validity,
      	pch_option_mismatch, default_pch_valid_p): Move to targhooks.c.
      	* toplev.h (skip_leading_substring): Move to tree-dump.c.
      	(warn_deprecated_use): Move to tree.h.
      	(output_quoted_string): Move to output.h.
      	(main_input_filename, main_input_basename, main_input_baselength):
      	Move to common.opt.
      	(default_get_pch_validity, default_pch_valid_p): Move to
      	targhooks.c.
      	* tree-dump.c (skip_leading_substring): Move from toplev.h.
      	* tree.c (warn_deprecated_use): Move from toplev.c.
      	* tree.h (warn_deprecated_use): Move from toplev.h.
      	* c-typeck.c, config/alpha/alpha.c, config/arc/arc.c,
      	config/arm/arm.c, config/avr/avr.c, config/bfin/bfin.c,
      	config/cris/cris.c, config/crx/crx.c, config/fr30/fr30.c,
      	config/frv/frv.c, config/h8300/h8300.c, config/ia64/ia64.c,
      	config/iq2000/iq2000.c, config/lm32/lm32.c, config/m32c/m32c.c,
      	config/m32r/m32r.c, config/m68hc11/m68hc11.c, config/m68k/m68k.c,
      	config/mcore/mcore.c, config/mep/mep.c,
      	config/microblaze/microblaze.c, config/mips/mips.c,
      	config/mmix/mmix.c, config/mn10300/mn10300.c,
      	config/moxie/moxie.c, config/pa/pa.c, config/pdp11/pdp11.c,
      	config/picochip/picochip.c, config/s390/s390.c,
      	config/score/score.c, config/sh/sh.c, config/sparc/sparc.c,
      	config/spu/spu.c, config/stormy16/stormy16.c, config/v850/v850.c,
      	config/vax/vax.c, config/xtensa/xtensa.c, gimple-low.c,
      	graphite-sese-to-poly.c, plugin.c, tree-cfg.c, tree-inline.c,
      	varasm.c, xcoffout.c: Don't include toplev.h.
      	* Makefile.in (c-typeck.o, tree-inline.o, tree-cfg.o,
      	gimple-low.o, graphite-sese-to-poly.o, targhooks.o, plugin.o,
      	varasm.o, xcoffout.o): Update dependencies.
      	* config/arm/t-arm (arm.o): Update dependencies.
      	* config/spu/t-spu-elf (spu.o): Update dependencies.
      
      cp:
      	* cp-objcp-common.c, lex.c, typeck.c: Don't include toplev.h.
      	* Make-lang.in (cp/lex.o, cp/cp-objcp-common.o, cp/typeck2.o):
      	Update dependencies.
      
      java:
      	* jcf-parse.c: Don't include toplev.h.
      	* Make-lang.in (java/jcf-parse.o): Don't depend on toplev.h.
      
      From-SVN: r167329
      Joseph Myers committed
  5. 26 Nov, 2010 1 commit
    • re PR bootstrap/45700 (--enable-checking=fold bootstrap failures) · c9019218
      	PR bootstrap/45700
      	* tree.h (build1_stat_loc, build2_stat_loc, build3_stat_loc,
      	build4_stat_loc, build5_stat_loc, build6_stat_loc): New inlines.
      	(build1_loc, build2_loc, build3_loc, build4_loc, build5_loc,
      	build6_loc): Define.
      	* fold-const.c (protected_set_expr_location_unshare): New inline.
      	(fold_convert_loc, pedantic_non_lvalue_loc): Use it.
      	(negate_expr, associate_trees, non_lvalue_loc, omit_one_operand_loc,
      	pedantic_omit_one_operand_loc, omit_two_operands_loc,
      	fold_truth_not_expr, invert_truthvalue_loc, make_bit_field_ref,
      	optimize_bit_field_compare, make_range, fold_range_test, fold_truthop,
      	build_fold_addr_expr_with_type_loc, fold_unary_loc, fold_binary_loc,
      	fold_indirect_ref_1, build_fold_indirect_ref_loc): Use builN_loc
      	instead of buildN followed by SET_EXPR_LOCATION or
      	protected_set_expr_location.
      	(fold_build1_stat_loc, fold_build2_stat_loc, fold_build3_stat_loc):
      	Use buildN_stat_loc instead of buildN_stat followed by
      	SET_EXPR_LOCATION.
      
      	* trans.h (build1_stat_loc, build2_stat_loc, build3_stat_loc,
      	build4_stat_loc): Removed.
      	(build1_loc, build2_loc, build3_loc, build4_loc): Removed.
      
      From-SVN: r167168
      Jakub Jelinek committed
  6. 24 Nov, 2010 2 commits
    • common.opt (user_vect_verbosity_level): New Variable entry. · 7cd23050
      	* common.opt (user_vect_verbosity_level): New Variable entry.
      	(ftree-vectorizer-verbose=): Mark as UInteger.
      	* flag-types.h (enum vect_verbosity_levels): Move from enum
      	verbosity_levels in tree-vectorizer.h.
      	* opts.c: Don't include tree.h.
      	(vect_set_verbosity_level): Move from tree-vectorizer.c.  Use
      	gcc_options parameter; take integer option argument.
      	(common_handle_option): Update call to vect_set_verbosity_level.
      	* tree-vectorizer.c (user_vect_verbosity_level): Remove.
      	(vect_set_verbosity_level): Move to opts.c.
      	(vect_verbosity_level, vect_print_dump_info): Update for change of
      	enum name.
      	* tree-vectorizer.h (enum verbosity_levels): Move to flag-types.h.
      	(vect_print_dump_info): Update for change of enum name.
      	* tree.h (vect_set_verbosity_level): Remove.
      	* Makefile.in (opts.o): Update dependencies.
      
      From-SVN: r167113
      Joseph Myers committed
    • common.opt (initial_max_fld_align, [...]): New Variable entries. · 299404a1
      	* common.opt (initial_max_fld_align, flag_debug_asm,
      	flag_dump_rtl_in_asm, flag_dump_all_passed, rtl_dump_and_exit,
      	flag_print_asm_name, graph_dump_format, help_printed,
      	help_columns, flag_opts_finished): New Variable entries.
      	(fdbg-cnt-list, fdbg-cnt=, fdebug-prefix-map=, frandom-seed,
      	frandom-seed=): Mark deferred.
      	(fsched-verbose=): Use UInteger and Var.
      	* flags.h (set_struct_debug_option, flag_print_asm_name,
      	rtl_dump_and_exit, flag_debug_asm, flag_dump_rtl_in_asm,
      	graph_dump_format): Don't declare here.
      	* haifa-sched.c (sched_verbose_param, fix_sched_param): Remove.
      	* opts-global.c: Include dbgcnt.h and debug.h.
      	(decode_options): Pass location to finish_options.
      	(handle_common_deferred_options): Check flag_dump_all_passed.
      	Handle OPT_fdbg_cnt_, OPT_fdbg_cnt_list, OPT_fdebug_prefix_map_,
      	OPT_frandom_seed and OPT_frandom_seed_.  Don't assert on
      	OPT_fstack_limit.
      	* opts.c: Don't include toplev.h, dbgcnt.h or debug.h.
      	(set_struct_debug_option): Add location_t parameter.  Update
      	recursive call.  Use error_at.
      	(default_options_optimization): Use error_at.
      	(finish_options): Add location_t parameter.  Use
      	opts->x_flag_opts_finished instead of first_time_p.  Use
      	opts->x_optimize instead of optimize.  Use error_at.  Pass
      	location to inform.
      	(print_filtered_help): Use opts->x_help_printed to track what
      	options have been printed.
      	(print_specific_help): Use opts->x_help_columns to track number of
      	columns.
      	(common_handle_option): Pass locations and gcc_options pointers to
      	more functions.  Use warning_at instead of fnotice and warning.
      	Don't handle OPT_fdbg_cnt_, OPT_fdbg_cnt_list or
      	OPT_fdebug_prefix_map_.  Use error_at.  Set
      	opts->x_initial_max_fld_align; don't set maximum_field_alignment.
      	Don't handle OPT_frandom_seed or OPT_frandom_seed_.  Don't handle
      	OPT_fsched_verbose_.
      	(handle_param): Add location_r parameter.  Use error_at.
      	(set_debug_level): Add location_r parameter.  Use error_at and
      	warning_at.
      	(setup_core_dumping): Add diagnostic_context parameter.
      	(decode_d_option): Add gcc_options, location_t and
      	diagnostic_context parameters and use them instead of global
      	state.  Use warning_at.
      	(enable_warning_as_error): Use error_at.
      	* opts.h (finish_options): Update prototype.
      	(set_struct_debug_option): Declare here.
      	* rtl.h (fix_sched_param): Remove.
      	* stor-layout.c (initial_max_fld_align): Remove.
      	* toplev.c (rtl_dump_and_exit, flag_print_asm_name,
      	graph_dump_format, flag_debug_asm, flag_dump_rtl_in_asm): Remove.
      	(process_options): Set maximum_field_alignment.
      	* tree.h (initial_max_fld_align) Don't declare here.
      	* Makefile.in (opts.o, opts-global.o): Update dependencies.
      
      c-family:
      	* c-opts.c (c_common_handle_option): Pass location to
      	set_struct_debug_option.
      
      testsuite:
      	* gcc.dg/opts-5.c: New test.
      
      From-SVN: r167106
      Joseph Myers committed
  7. 23 Nov, 2010 1 commit
    • tree.h (DECL_HAS_IMPLICIT_SECTION_NAME_P): New macro. · f16d3f39
      	* tree.h (DECL_HAS_IMPLICIT_SECTION_NAME_P): New macro.
      	(tree_decl_with_vis): Add implicit_section_name_p.
      	* targhooks.h (default_function_section): Declare.
      	* target.def (function_section): New hook.
      	* defaults.h (HOT_TEXT_SECTION_NAME,
      	UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Remove.
      	* predict.c (choose_function_section): Remove.
      	(estimate_bb_frequencies): Do not use choose_function_section.
      	* coretypes.h (enum node_frequency): Move here from cgraph.h
      	* cgraph.h (enum node_frequency): Remove.
      	* varasm.c (initialize_cold_section_name, unlikely_text_section,
      	unlikely_text_section_p): Remove.
      	(named_subsection_entry): New structure.
      	(get_text_section): New function.
      	(default_function_section): New function.
      	(function_section_1): Break out from ...; handle profile info.
      	(function_section): ... here.
      	(unlikely_text_section): Remove.
      	(unlikely_text_section_p): Use function_section_1.
      	(assemble_start_function): Do not initialize cold section.
      	(default_section_type_flags): Do not special case cold subsection.
      	(switch_to_section): Likewise.
      	* output.h (get_text_section): Define.
      	* config/i386/winnt.c: Do not special case cold section.
      	* config/darwin-protos.h (darwin_function_section): Declare.
      	* config/microblaze/microblaze.h (HOT_TEXT_SECTION_NAME,
      	UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Remove.
      	* config/ia64/hpux.h (HOT_TEXT_SECTION_NAME,
      	UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Remove.
      	(TARGET_ASM_FUNCTION_SECTION): Define to ia64_hpux_function_section.
      	* config/ia64/ia64.c (ia64_hpux_function_section): New function.
      	* config/darwin.c (machopic_select_section): Use
      	darwin_function_section.
      	(darwin_function_section): New function.
      	* config/darwin.h (HOT_TEXT_SECTION_NAME,
      	UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Remove.
      	(TARGET_ASM_FUNCTION_SECTION): Define.
      	* system.h (HOT_TEXT_SECTION_NAME,
      	UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Poison.
      
      From-SVN: r167085
      Jan Hubicka committed
  8. 19 Nov, 2010 1 commit
    • re PR tree-optimization/45830 (Code+rodata increase with -ftree-switch-conversion) · 8e97bc2b
      	PR tree-optimization/45830
      	* stmt.c (expand_switch_using_bit_tests_p): New function.
      	(expand_case): Use it.
      	* tree.h (expand_switch_using_bit_tests_p): New prototype.
      	* tree-switch-conversion.c (struct switch_conv_info): Add
      	bit_test_uniq, bit_test_count and bit_test_bb fields.
      	(check_range): Fix a comment.
      	(check_process_case): Compute bit_test_uniq and bit_test_count.
      	(create_temp_arrays): Use XCNEWVEC, merge 3 arrays into one
      	allocation.
      	(free_temp_arrays): Use XDELETEVEC, adjust for the 3 arrays merging.
      	(constructor_contains_same_values_p): Use FOR_EACH_VEC_ELT.
      	(array_value_type): New function.
      	(build_one_array): Use it, if it returned different type,
      	fold_convert all constructor fields and convert back to the
      	wider type in the generated code.
      	(process_switch): Initialize bit_test_uniq, bit_test_count and
      	bit_test_bb fields.  Don't optimize if expand_switch_using_bit_tests_p
      	returned true.
      
      	* gcc.target/i386/pr45830.c: New test.
      	* gcc.c-torture/execute/pr45830.c: New test.
      
      From-SVN: r166966
      Jakub Jelinek committed
  9. 15 Nov, 2010 1 commit
    • godump.c: New file. · c6a13190
      gcc/:
      	* godump.c: New file.
      	* common.opt (fdump-go-spec=): New option.
      	* tree.h: Add comments for TYPE_SYMTAB_ADDRESS and friends.
      	(TYPE_SYMTAB_IS_ADDRESS, TYPE_SYMTAB_IS_POINTER): Define.
      	(TYPE_SYMTAB_IS_DIE): Define.
      	(struct tree_type): Change GTY for symtab field to use
      	TYPE_SYMTAB_IS_ADDRESS and friends and to use a debug_hooks field
      	to pick the union field.
      	* debug.h (struct gcc_debug_hooks): Add tree_type_symtab_field.
      	(dump_go_spec_init): Declare.
      	* toplev.c (process_options): Handle flag_dump_go_spec.
      	* debug.c: Include "tree.h".
      	(do_nothing_debug_hooks): Set tree_type_symtab_field.
      	* dwarf2out.c (dwarf2_debug_hooks): Likewise.
      	* dbxout.c (dbx_debug_hooks): Likewise.
      	(xcoff_debug_hooks): Likewise.
      	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
      	* sdbout.c (sdb_debug_hooks): Likewise.  Do not define if
      	SDB_DEBUGGING_INFO is not defined.
      	* doc/invoke.texi (Option Summary): Mention -fdump-go-spec.
      	(Overall Options): Document -fdump-go-spec.
      	* Makefile.in (OBJS-common): Add godump.o.
      	(debug.o): Add dependency on $(TREE_H).
      	(godump.o): New target.
      	(GTFILES): Add $(srcdir)/godump.c.
      gcc/c-family/:
      	* c-lex.c (init_c_lex): Set macro debug callbacks if
      	flag_dump_go_spec is set.
      
      From-SVN: r166770
      Ian Lance Taylor committed
  10. 10 Nov, 2010 1 commit
    • common.opt (flag_excess_precision_cmdline, [...]): New Variable declarations. · d5478783
      	* common.opt (flag_excess_precision_cmdline, flag_generate_lto,
      	warn_larger_than, larger_than_size, warn_frame_larger_than,
      	frame_larger_than_size, flag_gen_aux_info, flag_shlib,
      	default_visibility, flag_tls_default): New Variable declarations.
      	(aux-info, auxbase, dumpbase, dumpdir, falign-functions=,
      	falign-jumps=, falign-labels=, falign-loops=, o, v): Use Var.
      	(v): Declare as Common and document here.
      	* flags.h (default_visibility, flag_generate_lto,
      	warn_larger_than, larger_than_size, warn_frame_larger_than,
      	frame_larger_than_size, flag_gen_aux_info, flag_pedantic_errors,
      	flag_shlib, flag_excess_precision_cmdline): Remove.
      	(set_Wstrict_aliasing): Update prototype.
      	* gcc.c (verbose_flag): Remove.
      	(driver_handle_option): Add diagnostic_context parameter.  Don't
      	handle OPT_v explicitly here.  Set verbose_flag to 1 rather than
      	incrementing it.
      	* opts-common.c (handle_option): Pass dc to handler.
      	* opts.c (warn_larger_than, larger_than_size,
      	warn_frame_larger_than, frame_larger_than_size,
      	default_visibility): Remove.
      	(common_handle_option): Add diagnostic_context parameter.
      	(set_fast_math_flags, set_unsafe_math_optimizations_flags): Add
      	gcc_options parameters.
      	(lang_handle_option, target_handle_option, read_cmdline_options,
      	decode_options): Add diagnostic_context parameters.
      	(finish_options): Access option state through opts pointer where
      	possible.
      	(common_handle_option): Access option state through opts pointer
      	where possible.  Do not set local static variable verbose.  Do not
      	explicitly handle OPT_v, OPT_Wstrict_aliasing_,
      	OPT_Wstrict_overflow_, OPT_Wunused, OPT_auxbase, OPT_dumpbase,
      	OPT_dumpdir, OPT_falign_functions_, OPT_falign_jumps_,
      	OPT_falign_labels_, OPT_falign_loops_, OPT_fira_verbose_, OPT_o or
      	OPT_fwhopr_.  Do not explicitly set .opt file variables for
      	OPT_aux_info or OPT_pedantic_errors.  Use dc for diagnostic
      	context.
      	(set_Wstrict_aliasing): Add gcc_options parameter.
      	* opts.h (struct cl_option_handler_func): Add diagnostic_context
      	parameter to handler.
      	(decode_options): Add diagnostic_context parameter.
      	* toplev.c (dump_base_name, dump_dir_name, aux_base_name,
      	asm_file_name, flag_generate_lto, flag_gen_aux_info,
      	aux_info_file_name, flag_shlib, flag_tls_default,
      	flag_excess_precision_cmdline, flag_pedantic_errors): Remove.
      	(toplev_main): Pass global_dc to decode_options.
      	* toplev.h (dump_base_name, dump_dir_name, aux_base_name,
      	aux_info_file_name, asm_file_name): Remove.
      	* tree.h (flag_tls_default): Remove.
      
      c-family:
      	* c-common.c (parse_optimize_options): Pass global_dc to
      	decode_options.
      	* c-opts.c (c_common_handle_option): Pass &global_options to
      	set_Wstrict_aliasing.
      	* c.opt (v): Don't mark Common or document here.
      
      fortran:
      	* cpp.c (asm_file_name): Don't declare here.
      
      objc:
      	* objc-act.c (dump_base_name): Don't declare here.
      
      From-SVN: r166565
      Joseph Myers committed
  11. 09 Nov, 2010 1 commit
    • tree.h (contains_placeholder_p): Fix comment. · 98cd3025
      	* tree.h (contains_placeholder_p): Fix comment.
      	(type_contains_placeholder_p): Adjust comment.
      	* tree.c (contains_placeholder_p): Fix comment.
      	(type_contains_placeholder_1): Do not recurse on pointed-to types and
      	adjust comment.
      	(type_contains_placeholder_p): Add comment.
      ada/
      	* gcc-interface/decl.c (finish_fat_pointer_type): New function.
      	(gnat_to_gnu_entity) <E_Array_Type>: Use it to build the fat pointer
      	type.
      	<E_Access_Type>: Likewise.
      
      From-SVN: r166484
      Eric Botcazou committed
  12. 05 Nov, 2010 1 commit
  13. 04 Nov, 2010 1 commit
    • tree.def (FMA_EXPR): New tree code. · 16949072
      2010-11-04  Richard Guenther  <rguenther@suse.de>
      	Richard Henderson  <rth@redhat.com>
      
      	* tree.def (FMA_EXPR): New tree code.
      	* expr.c (expand_expr_real_2): Add FMA_EXPR expansion code.
      	* gimple.c (gimple_rhs_class_table): FMA_EXPR is a GIMPLE_TERNARY_RHS.
      	* tree-cfg.c (verify_gimple_assign_ternary): Verify FMA_EXPR types.
      	* tree-inline.c (estimate_operator_cost): Handle FMA_EXPR.
      	* gimple-pretty-print.c (dump_ternary_rhs): Likewise.
      	* tree-ssa-math-opts.c (convert_mult_to_fma): New function.
      	(execute_optimize_widening_mul): Call it.  Reorganize to allow
      	dead stmt removal.  Move TODO flags ...
      	(pass_optimize_widening_mul): ... here.
      	* flag-types.h (enum fp_contract_mode): New enum.
      	* common.opt (flag_fp_contract_mode): New variable.
      	(-ffp-contract): New option.
      	* opts.c (common_handle_option): Handle it.
      	* doc/invoke.texi (-ffp-contract): Document.
      	* tree.h (fold_fma): Declare.
      	* builtins.c (fold_fma): New function.
      	(fold_builtin_fma): Likewise.
      	(fold_builtin_3): Call it for fma.
      	* fold-const.c (fold_ternary_loc): Fold FMA_EXPR.
      	* optabs.c (optab_for_tree_code): Handle FMA_EXPR.
      	* config/i386/sse.md (fms<mode>4, fnma<mode>, fnms<mode>4):
      	New expanders.
      	* doc/md.texi (fms<mode>4, fnma<mode>, fnms<mode>4): Document new
      	named patterns.
      	* genopinit.c (optabs): Initialize fms_optab, fnma_optab and fnms_optab.
      	* optabs.h (enum optab_index): Add OTI_fms, OTI_fnma and OTI_fnms.
      	(fms_optab, fnma_optab, fnms_optab): New defines.
      	* gimplify.c (gimplify_expr): Handle binary truth expressions
      	explicitly.  Handle FMA_EXPR.
      	* tree-vect-stmts.c (vectorizable_operation): Handle ternary
      	operations.
      
      	* gcc.target/i386/fma4-vector-2.c: New testcase.
      
      Co-Authored-By: Richard Henderson <rth@redhat.com>
      
      From-SVN: r166304
      Richard Guenther committed
  14. 01 Nov, 2010 1 commit
    • tree.h (EXPR_LOC_OR_HERE): New macro. · ec52b111
      	* tree.h (EXPR_LOC_OR_HERE): New macro.
      	* builtins.c (c_strlen): Use it.
      	* c-decl.c (build_enumerator): Likewise.
      	* gimplify.c (internal_get_tmp_var): Likewise.
      	(shortcut_cond_expr): Likewise.
      	(gimplify_one_sizepos): Likewise.
      c-family/
      	* c-common.c (conversion_warning, warn_for_collisions_1): Use
      	EXPR_LOC_OR_HERE.
      cp/
      	* decl.c (pop_switch): Use EXPR_LOC_OR_HERE.
      	* typeck.c (convert_for_assignment): Likewise.
      
      From-SVN: r166123
      Jason Merrill committed
  15. 29 Oct, 2010 1 commit
    • tree.h (build_vector_from_val): Declare. · f87bd04b
      2010-10-29  Artjoms Sinkarovs <artyom.shinakroff@gmail.com>
      	Andrew Pinski <pinskia@gmail.com>
      
      	* tree.h (build_vector_from_val): Declare.
      	* tree.c (build_vector_from_val): New function.
      	* c-typeck.c (build_binary_op): Handle vector shifting.
      	* doc/extend.texi: Description of the vector shifting operation.
      
      	testsuite/
      	* gcc.c-torture/execute/vector-shift.c: New testcase.
      	* gcc.c-torture/execute/vector-shift1.c: Likewise.
      	* gcc.c-torture/execute/vector-shift2.c: Likewise.
      	* gcc.dg/vector-shift.c: Likewise.
      	* gcc.dg/vector-shift1.c: Likewise.
      	* gcc.dg/torture/vector-shift2.c: Likewise.
      	* gcc.dg/vector-shift3.c: Likewise.
      	* gcc.dg/simd-1b.c: Adjust.
      
      Co-Authored-By: Andrew Pinski <pinskia@gmail.com>
      
      From-SVN: r166061
      Artjoms Sinkarovs committed
  16. 26 Oct, 2010 1 commit
    • Implement opaque-enum-specifiers for C++0x. · 90ecaf87
      gcc/
      	* tree.h (ENUM_IS_OPAQUE): New.
      	* dwarf2out.c (gen_enumeration_type_die): Use ENUM_IS_OPAQUE.
      gcc/cp/
      	* cp-tree.h (SET_OPAQUE_ENUM_P): New.
      	(OPAQUE_ENUM_P): New.
      	(ENUM_FIXED_UNDERLYING_TYPE_P): New.
      	(start_enum): Update prototype.
      	(finish_enum_value_list): New prototype.
      	* parser.c (cp_parser_elaborated_type_specifier): Issue a pedwarn if
      	"enum class" is used in an elaborated-type-specifier.
      	(cp_parser_enum_specifier): Rewrite to parse opaque-enum-specifiers.
      	* decl.c (copy_type_enum): New.
      	(finish_enum_value_list): New, with code from finish_enum.
      	(finish_enum): A lot of code removed. Added a gcc_assert.
      	(start_enum): Add parameters enumtype and is_new.
      	Rewrite to work with opaque-enum-specifiers.
      	* pt.c (maybe_process_partial_specialization): Allow for template
      	specialization of enumerations, with a pedwarn.
      	(lookup_template_class): Update call to start_enum. Call to
      	SET_OPAQUE_ENUM_P.
      	(tsubst_enum): Call to begin_scope, finish_scope and
      	finish_enum_value_list.
      
      From-SVN: r165935
      Rodrigo Rivas Costa committed
  17. 18 Oct, 2010 1 commit
  18. 16 Oct, 2010 1 commit
  19. 15 Oct, 2010 1 commit
  20. 11 Oct, 2010 1 commit
    • tree.h (TREE_THIS_NOTRAP): Use TREE_CHECK5. · 3748f5c9
      	* tree.h (TREE_THIS_NOTRAP): Use TREE_CHECK5.
      	* emit-rtl.c (set_mem_attributes_minus_bitpos): Only check
      	TREE_THIS_NOTRAP when appropriate.
      	(get_spill_slot_decl): Don't set TREE_THIS_NOTRAP on the new
      	VAR_DECL.
      	* gimplify.c (gimplify_expr): Copy NOTRAP from INDIRECT_REF to
      	newly created MEM_REF.
      
      From-SVN: r165313
      Ian Lance Taylor committed
  21. 08 Oct, 2010 1 commit
    • Makefile.in (TM_H): Include $(FLAGS_H) instead of options.h. · a75bfaa6
      	* Makefile.in (TM_H): Include $(FLAGS_H) instead of options.h.
      	(TREE_H): Include $(FLAGS_H) instead of options.h.
      	(opts-common.o): Depend on $(FLAGS_H) instead of options.h.
      	* c-objc-common.h (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      	* common.opt (flag_complex_method, flag_evaluation_order,
      	flag_ira_algorithm, flag_ira_region, flag_warn_unused_result): New
      	Variable declarations.
      	* configure.ac (tm_include_list): Include flags.h instead of
      	options.h.
      	* configure: Regenerate.
      	* flags.h: Condition out contents for target libraries.  Include
      	options.h at end of file.
      	(flag_complex_method, flag_ira_algorithm, flag_ira_region,
      	flag_evaluation_order, flag_warn_unused_result): Remove.
      	* gcc.c (main): Intialize global_options with global_options_init.
      	* langhooks-def.h (lhd_init_options_struct): Declare.
      	(LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      	(LANG_HOOKS_INITIALIZER): Include LANG_HOOKS_INIT_OPTIONS_STRUCT.
      	* langhooks.c (lhd_init_options_struct): New.
      	* langhooks.h (struct lang_hooks): Add init_options_struct.
      	Update comment on init_options.
      	* optc-gen.awk: Generate initializer for global_options_init, not
      	global_options.
      	* opth-gen.awk: Condition out structure declarations for target
      	libraries.  Declare global_options_init.
      	* opts-common.c: Include flags.h instead of options.h.
      	* opts.c (flag_warn_unused_result): Remove.
      	(read_cmdline_options): Take gcc_options parameters.  Pass them to
      	read_cmdline_option.
      	(initial_lang_mask, initial_min_crossjump_insns,
      	initial_max_fields_for_field_sensitive,
      	initial_loop_invariant_max_bbs_in_loop): Define at file scope.
      	(init_options_once): New.  Split out of decode_options.
      	(init_options_struct): New.  Split out of decode_options.
      	(decode_cmdline_options_to_array_default_mask): New.
      	(default_options_optimization): New.  Split out of decode_options.
      	(decode_options): Move most code to other functions.  Update call
      	to read_cmdline_options.
      	(finish_options): New.  Split out of decode_options.
      	* opts.h (decode_options): Add gcc_options parameters.
      	(init_options_once, init_options_struct,
      	decode_cmdline_options_to_array_default_mask): New.
      	* toplev.c (flag_complex_method, flag_ira_algorithm,
      	flag_ira_region, flag_evaluation_order): Remove.
      	(general_init): Use global_options_init for initial flag values
      	for global_dc.
      	(toplev_main): Call init_options_once, init_options_struct,
      	lang_hooks.init_options_struct,
      	decode_cmdline_options_to_array_default_mask and
      	lang_hooks.init_option before decode_options.  Update arguments to
      	decode_options.
      	* tree.h: Include flags.h instead of options.h.
      
      ada:
      	* gcc-interface/misc.c (gnat_init_options_struct): New.  Split out
      	from gnat_init_options.
      	(LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      
      c-family:
      	* c-common.c (parse_optimize_options): Call
      	decode_cmdline_options_to_array_default_mask before
      	decode_options.  Update arguments to decode_options.
      	* c-common.h (c_common_init_options_struct): Declare.
      	* c-opts.c (c_common_init_options_struct): New.  Split out from
      	c_common_init_options.
      
      cp:
      	* cp-objcp-common.h (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      
      fortran:
      	* f95-lang.c (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      	* gfortran.h (gfc_init_options_struct): Declare.
      	* options.c (gfc_init_options_struct): New.  Split out from
      	gfc_init_options.
      
      java:
      	* lang.c (java_init_options_struct): New.  Split out from
      	java_init_options.
      	(LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      
      lto:
      	* lto-lang.c (lto_init_options): Change to
      	lto_init_options_struct.  Update parameters.
      	(LANG_HOOKS_INIT_OPTIONS): Don't define.
      	(LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      
      From-SVN: r165189
      Joseph Myers committed
  22. 29 Sep, 2010 1 commit
    • tree.h (SCOPE_FILE_SCOPE_P): New macro. · 725214ac
      2010-09-29  Richard Guenther  <rguenther@suse.de>
      
      	* tree.h (SCOPE_FILE_SCOPE_P): New macro.
      	(DECL_FILE_SCOPE_P): Use it.
      	(TYPE_FILE_SCOPE_P): New macro.
      
              cp/
      	* cp-tree.h (CP_DECL_CONTEXT): Check DECL_FILE_SCOPE_P.
      	(CP_TYPE_CONTEXT): Similar.
      	(FROB_CONTEXT): Frob global_namespace to the global
      	TRANSLATION_UNIT_DECL.
      	* decl.c (cxx_init_decl_processing): Build a TRANSLATION_UNIT_DECL,
      	set DECL_CONTEXT of global_namespace to it.
      	(start_decl): Use CP_DECL_CONTEXT and test TYPE_P
      	instead of zeroing context.
      	(cp_finish_decl): Use DECL_FILE_SCOPE_P.
      	(grokfndecl): Likewise.
      	(start_preparsed_function): Likewise.
      	* name-lookup.c (maybe_push_decl): Use DECL_NAMESPACE_SCOPE_P.
      	(namespace_binding): Use SCOPE_FILE_SCOPE_P.
      	* pt.c (template_class_depth): Use CP_TYPE_CONTEXT.
      	(is_specialization_of_friend): Use CP_DECL_CONTEXT.
      	(push_template_decl_real): Likewise.
      	(tsubst_friend_class): Likewise.  Adjust context comparisons.
      	(instantiate_class_template): Use CP_TYPE_CONTEXT.
      	(tsubst): Do not substitute into TRANSLATION_UNIT_DECL.
      	* cxx-pretty-print.c (pp_cxx_nested_name_specifier): Use
      	SCOPE_FILE_SCOPE_P.
      
      From-SVN: r164719
      Richard Guenther committed
  23. 24 Sep, 2010 2 commits
    • lto-symtab.c (lto_symtab_entry_def): Add guessed field. · 051f8cc6
      	* lto-symtab.c (lto_symtab_entry_def): Add guessed field.
      	(lto_symtab_resolve_symbols): Set it.
      	(lto_symtab_merge_decls_1): Do not compute used_from_object_file;
      	store resolution field in cgraph/varpool.
      	* cgraph.c (cgraph_same_body_alias, cgraph_add_thunk): Return node.
      	(cgraph_get_node_or_alias, cgraph_get_node_or_alias): Constify.
      	(cgraph_dump_node): Drop used_from_object_file.
      	(cgraph_clone_node, cgraph_create_virtual_clone): Likewise.
      	(cgraph_function_body_availability): Use decl_replaceable_p.
      	(cgraph_make_node_local): Set resolution to LDPR_PREVAILING_DEF_IRONLY.
      	(cgraph_can_remove_if_no_direct_calls_and_refs): Use
      	cgraph_used_from_object_file_p.
      	(cgraph_will_be_removed_from_program_if_no_direct_calls): Use
      	cgraph_used_from_object_file_p.
      	(resolution_used_from_other_file_p): New functoin.
      	(cgraph_used_from_object_file_p): New predicate.
      	* cgraph.h: Include plugin-api.h
      	(struct cgraph_local_info): Remove used_from_object_file.
      	(struct cgraph_node): Add resolution field.
      	(struct varpool_node): Likewise; remove used_from_object_file;
      	reove const_value_known.
      	(cgraph_get_node, cgraph_get_node_or_alias, cgraph_node,
      	cgraph_same_body_alias, cgraph_add_thunk): Update prototypes.
      	(resolution_used_from_other_file_p, cgraph_used_from_object_file_p,
      	varpool_used_from_object_file_p): Declare.
      	(varpool_get_node, varpool_extra_name_alias): Update prototype.
      	* tree.h (DECL_REPLACEABLE_P): Remove.
      	(decl_replaceable_p, decl_binds_to_current_def_p): Declare.
      	* final.c (rest_of_clean_state): Use decl_binds_to_current_def_p.
      	* lto-cgraph.c (lto_output_node, lto_output_varpool_node,
      	input_overwrite_node, input_node, input_varpool_node): Stream
      	resolution.
      	* expr.c (expand_expr_real_1): Use const_value_known_p
      	* ipa.c (ipa_discover_readonly_nonaddressable_var): Do not set
      	const_value_known.
      	(cgraph_externally_visible_p): Use cgraph_used_from_object_file_p.
      	(function_and_variable_visibility): Set resolution for local vars
      	and functions.
      	use varpool_used_from_object_file_p.
      	* varasm.c (resolution_to_local_definition_p, resolution_local_p): New
      	static functions.
      	(default_binds_local_p_1): Use resolutoin info.
      	(decl_binds_to_current_def_p, decl_replaceable_p): New functions.
      	* varpool.c (varpool_get_node): Constify.
      	(const_value_known_p): Do not use vnode->const_value_known;
      	use decl_replaceable_p.
      	(varpool_finalize_decl): Do not set const_value_known.
      	(cgraph_variable_initializer_availability): Use decl_replaceable_p
      	(varpool_extra_name_alias): Return new node.
      	(varpool_used_from_object_file_p): New function.
      
      	* decl.c (finish_function): Use decl_replaceable_p
      	* method.c (make_alias_for_thunk): Update call of cgraph_same_body_alias.
      
      	* lto.c (lto_promote_cross_file_statics): Use const_value_known_p.
      
      From-SVN: r164610
      Jan Hubicka committed
    • extend.texi: (attribute leaf): Document. · 46a4da10
      	* doc/extend.texi: (attribute leaf): Document.
      	* tree.c (local_define_builtin): Handle ECF_LEAF.
      	(build_common_builtin_nodes): Set ECF_LEAF where needed.
      	* tree.h (ECF_LEAF): New.
      	* ipa-reference.c (propagate_bits): For leaf calls propagate ever overwrittable
      	and unavailable functions.
      	(ipa_init): Put all_module_statics into optimization_summary_obstack.
      	(copy_global_bitmap): Do not copy all_module_statics.
      	(read_write_all_from_decl): Use cgraph_node argument; handle ECF_LEAF.
      	(propagate): Handle overwritable and unavailable leaf functions;
      	initialize global info for overwritable and unavailable leaf functions;
      	do not free all module statics.
      	(ipa_reference_get_not_read_global, ipa_reference_get_not_written_global):
      	leaf calls don't clobber local statics.
      	* calls.c (flags_from_decl_or_type): Handle leaf.
      	* tree-cfg.c (stmt_can_make_abnormal_goto): Leaf functions can't do
      	abnormal gotos.
      
      	* c-common.c (handle_leaf_attribute): New function.
      	(struct attribute_spec c_common_att): Add leaf.
      
      	* gcc.dg/tree-ssa/leaf.c: New testcase.
      
      From-SVN: r164606
      Jan Hubicka committed
  24. 20 Sep, 2010 1 commit
    • langhooks.h (struct lang_hooks_for_types): Remove hash_types field. · 523e82a7
      	* langhooks.h (struct lang_hooks_for_types): Remove hash_types field.
      	* langhooks-def.h (LANG_HOOKS_HASH_TYPES): Delete.
      	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_HASH_TYPES.
      	* system.h (LANG_HOOKS_HASH_TYPES): Poison.
      	* tree.c (type_hash_canon): Do not test lang_hooks.types.hash_types.
      	(build_nonstandard_integer_type): Likewise.
      	(build_range_type_1): New function, built from...
      	(build_range_type): ...this.  Call build_range_type_1.
      	(build_nonshared_range_type): New function.
      	(build_array_type_1): New function, built from...
      	(build_array_type: ...this.  Call build_array_type_1.
      	(build_nonshared_array_type): New function.
      	* tree.h (build_nonshared_range_type): Declare.
      	(build_nonshared_array_type): Likewise.
      ada/
      	* gcc-interface/decl.c (gnat_to_gnu_entity): Replace calls to
      	build_array_type with calls to build_nonshared_array_type.
      	(substitute_in_type): Likewise.
      	* gcc-interface/misc.c (LANG_HOOKS_HASH_TYPES): Delete.
      	(LANG_HOOKS_TYPE_HASH_EQ): Define.
      	(gnat_post_options): Add 'static' keyword.
      	(gnat_type_hash_eq): New static function.
      	* gcc-interface/utils.c (fntype_same_flags_p): New function.
      	(create_subprog_type): Call it.
      	(create_index_type): Call build_nonshared_range_type and tidy up.
      	(create_range_type): Likewise.
      	* gcc-interface/gigi.h (fntype_same_flags_p): Declare.
      
      From-SVN: r164452
      Eric Botcazou committed
  25. 16 Sep, 2010 1 commit
    • tree.c (tree_node_structure_for_code): TRANSLATION_UNIT_DECL is TS_TRANSLATION_UNIT_DECL. · 6be14c0e
      2010-09-16  Richard Guenther  <rguenther@suse.de>
      
      	* tree.c (tree_node_structure_for_code): TRANSLATION_UNIT_DECL
      	is TS_TRANSLATION_UNIT_DECL.
      	(initialize_tree_contains_struct): Adjust.
      	(all_translation_units): New global vector.
      	(build_translation_unit_decl): New function.
      	* tree.h (TRANSLATION_UNIT_LANGUAGE): New macro.
      	(struct tree_translation_unit_decl): New.
      	(all_translation_units): Declare.
      	(union tree_node): Add translation_unit_decl member.
      	(build_translation_unit_decl): Declare.
      	* treestruct.def (TS_TRANSLATION_UNIT_DECL): New.
      	* lto-streamer-out.c (pack_ts_translation_unit_decl_value_fields):
      	New function.
      	(pack_value_fields): Call it.
      	(lto_output_tree_ref): Handle references to TRANSLATION_UNIT_DECL.
      	(lto_output_ts_translation_unit_decl_tree_pointers): New function.
      	(lto_output_tree_pointers): Call it.
      	* lto-streamer-in.c (lto_input_tree_ref): Handle references
      	to TRANSLATION_UNIT_DECL.
      	(unpack_ts_translation_unit_decl_value_fields): New function.
      	(unpack_value_fields): Call it.
      	(lto_input_ts_translation_unit_decl_tree_pointers): New function.
      	(lto_input_tree_pointers): Call it.
      	* lto-streamer.c (check_handled_ts_structures): Adjust.
      	* lto-streamer.h (enum LTO_tags): Add LTO_translation_unit_decl_ref.
      	* c-decl.c (all_translation_units): Remove.
      	(pop_scope): Use build_translation_unit_decl.
      	(collect_all_refs): Adjust.
      	(for_each_global_decl): Likewise.
      	(c_write_global_declarations): Likewise.
      
      	java/
      	* jcf-parse.c (current_file_list): Remove.
      	(java_parse_file): Use build_translation_unit_decl.  Adjust.
      
      From-SVN: r164331
      Richard Guenther committed
  26. 13 Sep, 2010 1 commit
    • tree.c (build_zero_cst): New. · e196b221
      	* tree.c (build_zero_cst): New.
      	* tree.h (build_zero_cst): Declare.
      	* tree-ssa-ccp.c (get_constant_value): Accept general operands.
      	(get_base_constructor): Break out from ...
      	(fold_const_aggregate_ref): Here; handle empty constructors.
      
      	* gcc.dg/torture/pr23821.c: Drop static keyword.
      	* gcc.dg/tree-ssa/loop-19.c: Likewise.
      	* gcc.dg/tree-ssa/foldconst-4.c: New.
      
      From-SVN: r164250
      Jan Hubicka committed
  27. 10 Sep, 2010 2 commits
  28. 08 Sep, 2010 1 commit
  29. 06 Sep, 2010 1 commit
    • tree.def (MISALIGNED_INDIRECT_REF): Remove. · be1ac4ec
      2010-09-06  Richard Guenther  <rguenther@suse.de>
      
      	* tree.def (MISALIGNED_INDIRECT_REF): Remove.
      	* tree.h (INDIRECT_REF_P): Only check for INDIRECT_REF.
      	(build_aligned_type): Declare.
      	* tree.c (check_qualified_type): Also compare TYPE_ALIGN.
      	(check_aligned_type): New function.
      	(build_aligned_type): Likewise.
      	* expr.c (expand_assignment): Handle misaligned stores via
      	TARGET_MEM_REF and MEM_REF using movmisalign_optab.
      	(expand_expr_real_1): Likewise.
      	(safe_from_p): Remove MISALIGNED_INDIRECT_REF handling.
      	* tree-vect-stmts.c (vectorizable_store): Do not build
      	MISALIGNED_INDIRECT_REF but initialize alignment information.
      	(vectorizable_load): Likewise.
      	* builtins.c (get_object_alignment): Remove MISALIGNED_INDIRECT_REF
      	handling.
      	* cfgexpand.c (expand_debug_expr): Likewise.
      	* dwarf2out.c (loc_list_from_tree): Likewise.
      	* fold-const.c (maybe_lvalue_p): Likewise.
      	(operand_equal_p): Likewise.
      	(build_fold_addr_expr_with_type_loc): Likewise.
      	* gimplify.c (gimplify_addr_expr): Likewise.
      	(gimplify_expr): Likewise.
      	* tree-cfg.c (verify_types_in_gimple_min_lval): Likewise.
      	(verify_gimple_assign_single): Likewise.
      	* tree-dump.c (dequeue_and_dump): Likewise.
      	(tree_could_trap_p): Likewise.
      	* tree-predcom.c (ref_at_iteration): Likewise.
      	* tree-pretty-print.c (dump_generic_node): Likewise.
      	(op_code_prio): Likewise.
      	(op_symbol_code): Likewise.
      	* tree-ssa-ccp.c (get_value_from_alignment): Likewise.
      	* tree-ssa-loop-im.c (for_each_index): Likewise.
      	(gen_lsm_tmp_name): Likewise.
      	* tree-ssa-loop-ivopts.c (idx_find_step): Likewise.
      	(find_interesting_uses_address): Likewise.
      	* tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
      	* tree-ssa-operands.c (get_expr_operands): Likewise.
      	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise.
      	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
      	(ao_ref_init_from_vn_reference): Likewise.
      	* tree.c (staticp): Likewise.
      	(build1_stat): Likewise.
      	(reference_alias_ptr_type): Likewise.
      	* emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
      	* config/rs6000/rs6000.c (rs6000_check_sdmode): Remove
      	MISALIGNED_INDIRECT_REF handling.
      
      From-SVN: r163915
      Richard Guenther committed
  30. 03 Sep, 2010 1 commit
    • tree.def (TARGET_MEM_REF): Merge TMR_SYMBOL and TMR_BASE. · 4d948885
      2010-09-03  Richard Guenther  <rguenther@suse.de>
      
      	* tree.def (TARGET_MEM_REF): Merge TMR_SYMBOL and TMR_BASE.
      	Move TMR_OFFSET to second operand.  Add TMR_INDEX2.
      	* tree.h (TMR_SYMBOL): Remove.
      	(TMR_BASE, TMR_OFFSET): Adjust.
      	(TMR_INDEX2): New.
      	* alias.c (ao_ref_from_mem): Use TMR_BASE.
      	* builtins.c (get_object_alignment): Merge TMR_BASE and
      	TMR_SYMBOL handling.
      	* cfgexpand.c (expand_debug_expr): Use TMR_BASE.
      	* gimple.c (get_base_address): Merge MEM_REF and TARGET_MEM_REF
      	handling.  Also allow TARGET_MEM_REF as base address.
      	(walk_stmt_load_store_addr_ops): TMR_BASE is always non-NULL.
      	* gimplify.c (gimplify_expr): Gimplify TMR_BASE like MEM_REF
      	base.  Gimplify TMR_INDEX2.
      	* tree-cfg.c (verify_types_in_gimple_reference): Adjust.
      	* tree-dfa.c (get_ref_base_and_extent): Likewise.
      	(get_addr_base_and_unit_offset): Likewise.
      	* tree-eh.c (tree_could_trap_p): Likewise.
      	* tree-pretty-print.c (dump_generic_node): Likewise.
      	* tree-ssa-address.c (tree_mem_ref_addr): Simplify.  Handle
      	TMR_INDEX2.
      	(create_mem_ref_raw): Merge symbol and base.  Move 2ndary
      	base to index2.
      	(get_address_description): Reconstruct addres description
      	from merged TMR_BASE and TMR_INDEX2.
      	(maybe_fold_tmr): Fold propagated addresses.
      	* tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Merge
      	MEM_REF and TARGET_MEM_REF paths.
      	(indirect_refs_may_alias_p): Likewise.
      	* tree-ssa-live.c (mark_all_vars_used_1): Handle TMR_INDEX2
      	instead of TMR_SYMBOL.
      	* tree-ssa-operands.c (get_tmr_operands): Simplify.
      	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Adjust
      	according to changes ...
      	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): ... here.
      	Split TARGET_MEM_REF into two fields plus the base.
      	* tree.c (mem_ref_offset): Simplify.
      	* tree-ssa-loop-im.c (for_each_index): Handle TMR_INDEX2.
      	* tree-ssa-loop-ivopts.c (find_interesting_uses_address): Likewise.
      	Strip NOPs when folding MEM_REF addresses.
      	* tree-ssa-sink.c (is_hidden_global_store): Handle TARGET_MEM_REF.
      	* gimple-fold.c (maybe_fold_reference): Fold TARGET_MEM_REF here ...
      	(fold_gimple_assign): ... not here.
      
      From-SVN: r163802
      Richard Guenther committed
  31. 01 Sep, 2010 1 commit
  32. 30 Aug, 2010 1 commit
    • Stack usage support · d3c12306
      	Stack usage support
      	* common.opt (-fstack-usage): New option.
      	* doc/invoke.texi (Debugging options): Document it.
      	* builtins.c (expand_builtin_apply): Pass TRUE as 4th argument to
      	allocate_dynamic_stack_space.
      	(expand_builtin_alloca): Add 4th bool parameter CANNOT_ACCUMULATE
      	and propagate it to allocate_dynamic_stack_space.
      	(expand_builtin) <BUILT_IN_ALLOCA>: Adjust for above change.
      	* calls.c (initialize_argument_information): Pass TRUE as 4th
      	argument to allocate_dynamic_stack_space.
      	(expand_call): Set current_function_has_unbounded_dynamic_stack_size
      	to 1 when pushing a variable-sized argument onto the stack.  Pass
      	TRUE as 4th argument to allocate_dynamic_stack_space.
      	Update current_function_pushed_stack_size.
      	(emit_library_call_value_1): Likewise.
      	* explow.c (allocate_dynamic_stack_space): Add 4th bool parameter
      	CANNOT_ACCUMULATE.  If flag_stack_usage, look into the size and
      	attempt to find an upper bound.  Remove redundant code for the
      	SETJMP_VIA_SAVE_AREA case.
      	* expr.h (allocate_dynamic_stack_space): Add 4th bool parameter.
      	* function.h (struct stack_usage): New structure.
      	(current_function_static_stack_size): New macro.
      	(current_function_dynamic_stack_size): Likewise.
      	(current_function_pushed_stack_size): Likewise.
      	(current_function_dynamic_alloc_count): Likewise.
      	(current_function_has_unbounded_dynamic_stack_size): Likewise.
      	(current_function_allocates_dynamic_stack_space): Likewise.
      	(struct function): Add new field 'su'.
      	* function.c (instantiate_virtual_regs): If SETJMP_VIA_SAVE_AREA,
      	add the value of the dynamic offset to the dynamic stack usage.
      	(gimplify_parameters): Set ALLOCA_FOR_VAR_P on call to BUILT_IN_ALLOCA
      	for variable-sized objects.
      	(prepare_function_start): Allocate cfun->su if flag_stack_usage.
      	(rest_of_handle_thread_prologue_and_epilogue): Call output_stack_usage.
      	* gimplify.c (gimplify_decl_expr): Set ALLOCA_FOR_VAR_P on call to
      	BUILT_IN_ALLOCA for variable-sized objects.
      	* output.h (output_stack_usage): Declare.
      	* toplev.c (stack_usage_file): New file pointer.
      	(output_stack_usage): New function.
      	(open_auxiliary_file): Likewise.
      	(lang_dependent_init): Open file if flag_stack_usage is set.
      	(finalize): Close file if stack_usage_file is not null.
      	* tree.h (ALLOCA_FOR_VAR_P): New macro.
      	* config/alpha/alpha.c (compute_frame_size): New function.
      	(alpha_expand_prologue): Use it.
      	(alpha_start_function): Likewise.
      	(alpha_expand_epilogue): Likewise.  Set stack usage info.
      	* config/i386/i386.c (ix86_expand_prologue): Likewise.
      	* config/ia64/ia64.c (ia64_expand_prologue): Likewise.
      	* config/mips/mips.c (mips_expand_prologue): Likewise.
      	* config/pa/pa.c (hppa_expand_prologue): Likewise.
      	* config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.
      	* config/sparc/sparc.c (sparc_expand_prologue): Likewise.
      testsuite/
      	* lib/gcc-dg.exp (cleanup-stack-usage): New procedure.
      	* lib/scanasm.exp (scan-stack-usage): Likewise.
      	(scan-stack-usage-not): Likewise.
      	* gcc.dg/stack-usage-1.c: New test.
      	* gcc.target/i386/stack-usage-realign.c: Likewise.
      
      From-SVN: r163660
      Eric Botcazou committed
  33. 20 Aug, 2010 1 commit
  34. 17 Aug, 2010 1 commit
  35. 16 Aug, 2010 1 commit
    • tree-cfg.c (verify_types_in_gimple_reference): Verify TARGET_MEM_REF a bit. · 4b228e61
      2010-08-16  Richard Guenther  <rguenther@suse.de>
      
      	* tree-cfg.c (verify_types_in_gimple_reference): Verify
      	TARGET_MEM_REF a bit.
      	* tree-ssa-address.c (addr_for_mem_ref): Adjust.
      	(create_mem_ref_raw): Always create TMR_OFFSET, store the
      	alias pointer type via it.
      	(copy_mem_ref_info): Adjust.
      	(maybe_fold_tmr): Likewise.
      	* tree.c (mem_ref_offset): Also handle TARGET_MEM_REF.
      	(reference_alias_ptr_type): Likewise.
      	* tree.def (TARGET_MEM_REF): Remove TMR_ORIGINAL operand,
      	adjust documentation of TMR_OFFSET operand.
      	* alias.c (get_alias_set): Do not look at TMR_ORIGINAL but
      	use the alias pointer type.
      	* expr.c (expand_expr_real_1): Do not use TMR_ORIGINAL to
      	initialize mem attrs but the TMR itself.
      	* tree-eh.c (tree_could_trap_p): Handle TARGET_MEM_REF
      	similar to MEM_REF.
      	* tree-pretty-print.c (dump_generic_node): Do not dump TMR_ORIGINAL.
      	* tree-ssa-loop-ivopts.c (idx_remove_ssa_names): Remove.
      	(unshare_and_remove_ssa_names): Likewise.
      	(copy_ref_info): Adjust.
      	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Simplify
      	TARGET_MEM_REF case.
      	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Do not look
      	at TMR_ORIGINAL.
      	* tree.h (TMR_ORIGINAL): Remove.
      	* gimple.c (get_base_address): For TARGET_MEM_REF with a
      	symbol return that.
      	* tree-dfa.c (get_ref_base_and_extent): Handle TARGET_MEM_REF
      	with a symbol.
      	(get_addr_base_and_unit_offset): Likewise.
      	* tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Handle
      	TARGET_MEM_REFs.
      	(indirect_ref_may_alias_decl_p): Likewise.
      	(refs_may_alias_p_1): Do not bail out for TARGET_MEM_REFs.
      
      From-SVN: r163278
      Richard Guenther committed
  36. 12 Aug, 2010 1 commit
    • tree-flow.h (struct ptr_info_def): Add align and misalign fields. · 1be38ccb
      2010-08-12  Richard Guenther  <rguenther@suse.de>
      
      	* tree-flow.h (struct ptr_info_def): Add align and misalign fields.
      	* tree-ssa-alias.c (get_ptr_info): Move ...
      	* tree-ssanames.c (get_ptr_info): ... here.  Initialize
      	align and misalign fields conservatively.
      	* tree-ssa-ccp.c (ccp_finalize): From partially constant pointers
      	derive alignment information.
      	(evaluate_stmt): Derive alignment information from memory
      	allocation functions.
      	* tree.h (get_pointer_alignment): Make unsigned.
      	* builtins.c (get_object_alignment): Use alignment information we
      	have computed for pointers.
      	(get_pointer_alignment): Likewise.  Make conservative, return
      	and unsigned value.
      	(expand_builtin_strlen): Adjust.
      	(expand_builtin_memcmp): Likewise.
      	(expand_builtin_strcmp): Likewise.
      	(expand_builtin_strncmp): Likewise.
      	(get_builtin_sync_mem): Use at least mode alignment.
      	(fold_builtin_memset): Adjust.
      	(fold_builtin_memory_op): Likewise.
      	* gimple-pretty-print.c (dump_gimple_phi): Alongside alias
      	information also dump pointer alignment knowledge.
      	(dump_gimple_stmt): Likewise.
      
      From-SVN: r163189
      Richard Guenther committed
  37. 10 Aug, 2010 1 commit
    • tree.h (get_object_alignment): Adjust prototype. · e80c2726
      2010-08-10  Richard Guenther  <rguenther@suse.de>
      
      	* tree.h (get_object_alignment): Adjust prototype.
      	* builtins.c (get_object_alignment): Return unsigned int,
      	drop the align parameter.  Handle MEM_REF, MISALIGNED_INDIRECT_REF
      	and TARGET_MEM_REF properly.
      	(get_pointer_alignment): Adjust.
      	* emit-rtl.c (get_mem_align_offset): Adjust comment.
      	(set_mem_attributes_minus_bitpos): Adjust.
      	* tree-ssa-ccp.c (get_value_from_alignment): Adjust.
      
      From-SVN: r163051
      Richard Guenther committed