Commit Graph

102019 Commits

Author SHA1 Message Date
Xinliang David Li
0c5bb946c1 Revert change in revision 162652.
2010-07-29  Xinliang David Li  <davidxl@google.com>

	PR bootstrap/45119
	* tree-ssa-loop-ivopts.c (get_address_cost): Revert change
	in revision 162652.

From-SVN: r162683
2010-07-29 07:30:18 -07:00
Richard Guenther
2c2fbff7d6 timevar.def (TV_TREE_STORE_COPY_PROP): Remove.
2010-07-29  Richard Guenther  <rguenther@suse.de>

	* timevar.def (TV_TREE_STORE_COPY_PROP): Remove.
	(TV_TREE_STORE_CCP): Likewise.
	(TV_TREE_REDPHI): Likewise.

From-SVN: r162682
2010-07-29 13:50:00 +00:00
Richard Guenther
950f7f4526 double-int.h (double_int_and_not): New function.
2010-07-28  Richard Guenther  <rguenther@suse.de>

	* double-int.h (double_int_and_not): New function.
	* combine.c (try_combine): Use it.
	* tree-vrp.c (simplify_bit_ops_using_ranges): Likewise.

From-SVN: r162681
2010-07-29 13:45:47 +00:00
Bernd Schmidt
8d0741923d re PR rtl-optimization/42575 (arm-eabi-gcc 64-bit multiply weirdness)
PR rtl-optimization/42575
	* dce.c (word_dce_process_block): Renamed from byte_dce_process_block.
	Argument AU removed.  All callers changed.  Ignore artificial refs.
	Use return value of df_word_lr_simulate_defs to decide whether an insn
	is necessary.
	(fast_dce): Rename arg to WORD_LEVEL.
	(run_word_dce): Renamed from rest_of_handle_fast_byte_dce.  No longer
	static.
	(pass_fast_rtl_byte_dce): Delete.
	* dce.h (run_word_dce): Declare.
	* df-core.c (df_print_word_regset): Renamed from df_print_byteregset.
	All callers changed.  Simplify code to only deal with two-word regs.
	* df.h (DF_WORD_LR): Renamed from DF_BYTE_LR.
	(DF_WORD_LR_BB_INFO): Renamed from DF_BYTE_LR_BB_INFO.
	(DF_WORD_LR_IN): Renamed from DF_BYTE_LR_IN.
	(DF_WORD_LR_OUT): Renamed from DF_BYTE_LR_OUT.
	(struct df_word_lr_bb_info): Renamed from df_byte_lr_bb_info.
	(df_word_lr_mark_ref): Declare.
	(df_word_lr_add_problem, df_word_lr_mark_ref, df_word_lr_simulate_defs,
	df_word_lr_simulate_uses): Declare or rename from byte variants.
	(df_byte_lr_simulate_artificial_refs_at_top,
	df_byte_lr_simulate_artificial_refs_at_end, df_byte_lr_get_regno_start,
	df_byte_lr_get_regno_len, df_compute_accessed_bytes): Delete
	declarations.
	(df_word_lr_get_bb_info): Rename from df_byte_lr_get_bb_info.
	(enum df_mm): Delete.
	* df-byte-scan.c: Delete file.
	* df-problems.c (df_word_lr_problem_data): Renamed from
	df_byte_lr_problem_data, all members deleted except for
	WORD_LR_BITMAPS, which is renamed from BYTE_LR_BITMAPS.  Uses changed.
	(df_word_lr_expand_bitmap, df_byte_lr_simulate_artificial_refs_at_top,
	df_byte_lr_simulate_artificial_refs_at_end, df_byte_lr_get_regno_start,
	df_byte_lr_get_regno_len, df_byte_lr_check_regs,
	df_byte_lr_confluence_0): Delete functions.
	(df_word_lr_free_bb_info): Renamed from df_byte_lr_free_bb_info; all
	callers changed.
	(df_word_lr_alloc): Renamed from df_byte_lr_alloc; all callers changed.
	Don't initialize members that were deleted, don't try to discover data
	about registers.  Ignore hard regs.
	(df_word_lr_reset): Renamed from df_byte_lr_reset; all callers changed.
	(df_word_lr_mark_ref): New function.
	(df_word_lr_bb_local_compute): Renamed from
	df_byte_bb_lr_local_compute; all callers changed.  Use
	df_word_lr_mark_ref.  Assert that artificial refs don't include
	pseudos.  Ignore hard registers.
	(df_word_lr_local_compute): Renamed from df_byte_lr_local_compute.
	Assert that exit block uses don't contain pseudos.
	(df_word_lr_init): Renamed from df_byte_lr_init; all callers changed.
	(df_word_lr_confluence_n): Renamed from df_byte_lr_confluence_n; all
	callers changed.  Ignore hard regs.
	(df_word_lr_transfer_function): Renamed from
	df_byte_lr_transfer_function; all callers changed.
	(df_word_lr_free): Renamed from df_byte_lr_free; all callers changed.
	(df_word_lr_top_dump): Renamed from df_byte_lr_top_dump; all callers
	changed.
	(df_word_lr_bottom_dump): Renamed from df_byte_lr_bottom_dump; all
	callers changed.
	(problem_WORD_LR): Renamed from problem_BYTE_LR; uses changed;
	confluence operator 0 set to NULL.
	(df_word_lr_add_problem): Renamed from df_byte_lr_add_problem; all
	callers changed.
	(df_word_lr_simulate_defs): Renamed from df_byte_lr_simulate_defs.
	Return bool, true if bitmap changed or insn otherwise necessary.
	All callers changed.  Simplify using df_word_lr_mark_ref.
	(df_word_lr_simulate_uses): Renamed from df_byte_lr_simulate_uses;
	all callers changed.  Simplify using df_word_lr_mark_ref.
	* lower-subreg.c: Include "dce.h"
	(decompose_multiword_subregs): Call run_word_dce if df available.
	* Makefile.in (lower-subreg.o): Adjust dependencies.
	(df-byte-scan.o): Delete.
	* timevar.def (TV_DF_WORD_LR): Renamed from TV_DF_BYTE_LR.

From-SVN: r162678
2010-07-29 12:39:57 +00:00
Richard Guenther
9b638c031a tree.c (build_vector): Assert that the vector constant has enough elements.
2010-07-29  Richard Guenther  <rguenther@suse.de>

	* tree.c (build_vector): Assert that the vector constant
	has enough elements.
	(build_vector_from_ctor): Pad with trailing zeros.

From-SVN: r162677
2010-07-29 12:31:29 +00:00
Richard Guenther
1c09321ca0 re PR tree-optimization/45120 (-fipa-pta causes FAIL: gcc.c-torture/execute/pta-field-2.c execution)
2010-07-29  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/45120
	* tree-ssa-structalias.c (get_constraint_for_component_ref):
	Handle offset in DEREFs properly.
	(get_constraint_for_1): Handle MEM_REF offset properly.

	* gcc.dg/ipa/ipa-pta-15.c: New testcase.

From-SVN: r162676
2010-07-29 12:30:09 +00:00
Mikael Morin
81fb8a483c re PR fortran/42051 ([OOP] ICE on array-valued function with CLASS formal argument)
2010-07-29  Mikael Morin  <mikael@gcc.gnu.org>

	PR fortran/42051
	PR fortran/44064
	* class.c (gfc_find_derived_vtab): Accept or discard newly created
	symbols before returning.

2010-07-29  Mikael Morin  <mikael@gcc.gnu.org>

	PR fortran/42051
	PR fortran/44064
	* gfortran.dg/pr42051.f03: New testcase.

From-SVN: r162674
2010-07-29 11:22:40 +00:00
Richard Guenther
6befd6b053 re PR tree-optimization/45034 ("safe" conversion from unsigned to signed char gives broken code)
2010-07-29  Richard Guenther  <rguenther@suse.de>

	PR middle-end/45034
	* convert.c (convert_to_integer): Always use an unsigned
	type for narrowed negate and bitwise not.

	* gcc.c-torture/execute/pr45034.c: New testcase.

From-SVN: r162673
2010-07-29 10:59:54 +00:00
Joseph Myers
6cfcf3eda6 lang.opt (cpp): Remove Joined and Separate markers.
* lang.opt (cpp): Remove Joined and Separate markers.
	(cpp=): New internal option.
	* lang-specs.h (F951_CPP_OPTIONS): Generate -cpp= option.
	* cpp.c (gfc_cpp_handle_option): Handle OPT_cpp_ instead of
	OPT_cpp.

From-SVN: r162672
2010-07-29 10:45:08 +01:00
Daniel Kraft
2b868bf548 re PR fortran/45117 (Segfault in resolve_array_bound)
2010-07-29  Daniel Kraft  <d@domob.eu>

	PR fortran/45117
	* array.c (resolve_array_bound): Fix error message to properly handle
	non-variable expressions.

From-SVN: r162670
2010-07-29 11:06:53 +02:00
Ira Rosen
61869cc95e tree-vect-loop.c (vect_create_epilog_for_reduction): Switch to outer loop when creating reduction epilogue for double reduction...
* tree-vect-loop.c (vect_create_epilog_for_reduction): Switch
	to outer loop when creating reduction epilogue for double reduction,
	and switch back to the inner loop when updating the phi nodes.
	Update uses of outer loop exit phi nodes in double reduction (instead
	of uses of reduction).

From-SVN: r162668
2010-07-29 06:02:34 +00:00
Jerry DeLisle
01b9977477 re PR fortran/44931 (For INPUT_UNIT, INQUIRE NAME= should not return "stdin")
2010-07-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libfortran/44931
	* io/inquire.c (inquire_via_unit): Use ttyname to return actual device
	file name for stdin, stdout, and stderr.  If ttyname does not succeed
	fall back to default names for these units. Include string.h to allow
	using strlen function.
	* unix.c: Remove typedef of unix_stream structure, move to unix.h.
	* unix.h: Add typedef of unix_stream structure so that it is
	accessible to inquire.c.

From-SVN: r162667
2010-07-29 01:32:23 +00:00
GCC Administrator
fb1341901a Daily bump.
From-SVN: r162666
2010-07-29 00:17:14 +00:00
Paolo Carlini
1732dfea70 re PR c++/45096 (g++.dg/cpp0x/auto3.C)
2010-07-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/45096
	* g++.dg/cpp0x/auto3.C: Tweak dg-error string.

From-SVN: r162657
2010-07-28 20:02:56 +00:00
Michael Meissner
8119a6a61b Add power6 copysign/parity support
From-SVN: r162656
2010-07-28 19:58:38 +00:00
Xinliang David Li
1808114925 IVOPT performance tuning patch.
IVOPT performance tuning patch. The main problem is a variant of maximal weight 
bipartite matching/assignment problem -- i.e., there is an additional global
cost function. The complexity of the algorighm to find the optimial solution
> O(n^2). The existing algorithm in gcc tries to find the solution in 3 stages:
1) Find the initial solution set (dynamic programing style)
2) Extend the solution set
3) Prune the soultion set.

The problem is that in step 1, the initial set tends to be too large so that
the final solution is very likely local optimal.

This patch addresses the problem and sees very large SPEC improvements.

Another area of problem is that ivopts often creates loop invariant expressions, and
such expressions increase register pressure which is not counted. This is addressed
in this patch.

The third main problem is the profile data is not considered in cost computation

The forth problem is that loop invariant comptuation's cost is not properly adjusted.



There are more tuning opportuties, namely:

1) Do not check ivs dependency during ivs set pruning (this improves deallII 8% on core2)
2) Unconditionally consider all important candidates in partial set expansion (in addition
to the extended solutino based on selected candidates)
3) revisit the two stage initial set computation.

From-SVN: r162653
2010-07-28 19:13:11 +00:00
Kai Tietz
3c5273a96b i386.h (MCOUNT_NAME_BEFORE_PROLOGUE): New.
2010-07-28  Kai Tietz  <kai.tietz@onevision.com>

        * config/i386/i386.h (MCOUNT_NAME_BEFORE_PROLOGUE): New.
        * config/i386/i386.c (ix86_profile_before_prologue): New.
        (override_options): Add special handling for -mfentry.
        (ix86_function_regparm): Likewise.
        (ix86_function_sseregparm): Likewise.
        (ix86_frame_pointer_required): Likewise.
        (ix86_expand_prologue): Check for ms_hook_prologue.
        (x86_function_profiler): Adjust mcount output.
        (TARGET_PROFILE_BEFORE_PROLOGUE): Define hook.
        * config/i386/i386.opt (mfentry): New.
        * doc/invoke.texi (mfentry): Add documentation.
        * doc/tm.texi: Regenerated..
        * doc/tm.texi.in (TARGET_PROFILE_BEFORE_PROLOGUE): New.
        * final.c (final_start_function): Replace macro
        PROFILE_BEFORE_PROLOGUE by target hook.
        * function.c (thread_prologue_and_epilogue_insns): Likewise.
        * target.def (profile_before_prologue): New hook.
        * targhooks.c (default_profile_before_prologue): New.
        * targhooks.h (default_profile_before_prologue): New.

From-SVN: r162651
2010-07-28 20:00:09 +02:00
Mikael Morin
c9d75a48c4 decl.c (free_value): Also free repeat field.
2010-07-28  Mikael Morin  <mikael@gcc.gnu.org>

	* decl.c (free_value): Also free repeat field.
	* data.c (gfc_assign_data_value): Always free offset before returning.

From-SVN: r162649
2010-07-28 17:33:37 +00:00
Daniel Kraft
69dcd06ab8 gfortran.h (gfc_build_intrinsic_call): New method.
2010-07-28  Daniel Kraft  <d@domob.eu>

	* gfortran.h (gfc_build_intrinsic_call): New method.
	* expr.c (gfc_build_intrinsic_call): New method.
	* simplify.c (range_check): Ignore non-constant value.
	(simplify_bound_dim): Handle non-variable expressions and
	fix memory leak with non-free'ed expression.
	(simplify_bound): Handle non-variable expressions.
	(gfc_simplify_shape): Ditto.
	(gfc_simplify_size): Ditto, but only in certain cases possible.

2010-07-28  Daniel Kraft  <d@domob.eu>

	* gfortran.dg/bound_8.f90: New test.

From-SVN: r162648
2010-07-28 19:06:40 +02:00
Jakub Jelinek
05b5ea3495 re PR debug/45105 (-fcompare-debug failure at -Os)
PR debug/45105
	* gcse.c (hoist_code): Use FOR_BB_INSNS macro.

	* gcc.dg/pr45105.c: New test.

From-SVN: r162647
2010-07-28 19:01:05 +02:00
Jakub Jelinek
652c4638a0 re PR debug/45103 (DW_OP_reg* has too large valid range for noreturn funcs)
PR debug/45103
	* dwarf2out.c (dwarf2out_var_location): Always consider
	NOTE_DURING_CALL_P notes, even when not followed by real instructions.

From-SVN: r162646
2010-07-28 19:00:06 +02:00
Maxim Kuvyrkov
fb039b24f5 re PR rtl-optimization/45107 (ICE: in insert_expr_in_table, at gcse.c:1213 with -Os -gcse-las (another one))
PR rtl-optimization/45107
	* gcse.c (hash_scan_set): Use max_distance for gcse-las.

	PR rtl-optimization/45107
	* gcc.dg/pr45107.c: New test.

From-SVN: r162645
2010-07-28 16:50:14 +00:00
Richard Guenther
7a95d078fa tree-ssa-ccp.c: Remove comment regarding STORE-CCP.
2010-07-28  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-ccp.c: Remove comment regarding STORE-CCP.
	(set_lattice_value): Do not query an old default value.
	(get_value_for_expr): New function.  Properly canonicalize
	float values.
	(ccp_visit_phi_node): Use it.

From-SVN: r162638
2010-07-28 16:03:09 +00:00
Chung-Lin Tang
12ffc7d5f6 arm.c (arm_pcs_default): Remove static.
* config/arm/arm.c (arm_pcs_default): Remove static.
	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_PCS or
	__ARM_PCS_VFP to indicate soft/hard-float calling convention.
	(arm_pcs_default): Declare.

From-SVN: r162637
2010-07-28 15:40:58 +00:00
David Yuste
331a9a590d * MAINTAINERS (Write After Approval): Add myself.
From-SVN: r162636
2010-07-28 17:23:55 +02:00
Iain Sandoe
b2a0ce24ec part 3 of darwin64 PPC ABI changes
* config/rs6000/rs6000.c (rs6000_override_options): 
	Use TARGET_MACHO inline, move darwin_one_byte_bool from here...
	... to darwin_rs6000_override_options.
	(rs6000_return_in_memory): Update preceding comment for darwin
	64 bit ABI.  Use TARGET_MACHO inline.
	(rs6000_darwin64_struct_check_p): New.
	(function_arg_advance): Use rs6000_darwin64_struct_check_p.
	(function_arg): Likewise.
	(rs6000_arg_partial_bytes): Likewise.
	(rs6000_function_value): Likewise.

From-SVN: r162635
2010-07-28 14:47:11 +00:00
Andi Kleen
c71eb2b76c * lto-opts.c (lto_file_read_options): Add loop over all inputs.
From-SVN: r162633
2010-07-28 14:30:45 +00:00
Andi Kleen
d720b8692c * Make-lang.in (lto.o): Add dependency to splay-tree.h
From-SVN: r162632
2010-07-28 14:06:45 +00:00
Andi Kleen
90e26247ab Add Changelog too
From-SVN: r162631
2010-07-28 14:05:59 +00:00
Andi Kleen
ba4141f488 lto-plugin.c (translate): Remove debug fprintf.
* lto-plugin.c (translate): Remove debug fprintf.

From-SVN: r162630
2010-07-28 14:05:39 +00:00
Richard Guenther
3abd6c1abf re PR target/44903 (FAIL: gcc.dg/pr35258.c execution test)
2010-07-28  Richard Guenther  <rguenther@suse.de>

	PR middle-end/44903
	* builtins.c (fold_builtin_memory_op): On STRICT_ALIGNMENT
	targets try harder to not generate unaligned accesses.

From-SVN: r162624
2010-07-28 10:32:54 +00:00
Maxim Kuvyrkov
bb801fa63c re PR rtl-optimization/45101 (ICE: in insert_expr_in_table, at gcse.c:1213 with -gcse-las)
PR rtl-optimization/45101
	* gcc.dg/pr45101.c: New test.

From-SVN: r162623
2010-07-28 10:32:10 +00:00
Maxim Kuvyrkov
4bcaf35411 re PR rtl-optimization/45101 (ICE: in insert_expr_in_table, at gcse.c:1213 with -gcse-las)
PR rtl-optimization/45101
	* gcse.c (hash_scan_set): Fix argument ordering of insert_expr_in_table
	for gcse-las.

From-SVN: r162622
2010-07-28 10:09:53 +00:00
Eric Botcazou
c2cf2f4a61 re PR tree-optimization/44885 (miscompilation of gnat.dg/aliasing3.adb after mem-ref2)
PR tree-optimization/44885
	* tree-sra.c (find_param_candidates): Skip pointer types to arrays
	with non-aliased component.

From-SVN: r162621
2010-07-28 10:03:00 +00:00
Joseph Myers
eea13eaddc darwin-driver.c (SWITCH_TAKES_ARG, [...]): Remove.
* config/darwin-driver.c (SWITCH_TAKES_ARG,
	WORD_SWITCH_TAKES_ARG): Remove.
	* cppspec.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Remove.
	* defaults.h (DEFAULT_SWITCH_TAKES_ARG,
	DEFAULT_WORD_SWITCH_TAKES_ARG): Move from gcc.h.
	(SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Move default
	definitions from gcc.c.
	* gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Move to
	defaults.h.
	* gcc.h (DEFAULT_SWITCH_TAKES_ARG, DEFAULT_WORD_SWITCH_TAKES_ARG):
	Move to defaults.h.
	* opts-common.c: Include tm.h.
	(decode_cmdline_option): Use SWITCH_TAKES_ARG and
	WORD_SWITCH_TAKES_ARG to count arguments to unknown options.
	Handle more than one argument.  Set canonical_option_num_elements.
	(decode_cmdline_options_to_array): Set
	canonical_option_num_elements and trailing elements of
	canonical_option.
	* opts.h (struct cl_decoded_option): Allow four elements in
	canonical_option.  Add field canonical_option_num_elements.
	* Makefile.in (opts-common.o): Update dependencies.

ada:
	* gcc-interface/misc.c (gnat_init_options): Ignore erroneous
	options.  Check canonical_option_num_elements on options copied.

fortran:
	* gfortranspec.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG):
	Remove.

From-SVN: r162620
2010-07-28 10:36:21 +01:00
Tobias Burnus
57e15568e8 re PR fortran/45077 (ICE with -fwhole-file in fold_convert_loc, at fold-const.c:2021)
2010-07-28  Tobias Burnus  <burnus@net-b.de>

        PR fortran/45077
        * trans-types.c (gfc_get_derived_type): Fix DT declaration
        from modules for whole-file mode.

2010-07-28  Tobias Burnus  <burnus@net-b.de>

        PR fortran/45077
        * gfortran.dg/whole_file_24.f90: New.

From-SVN: r162619
2010-07-28 10:44:29 +02:00
Eric Botcazou
b4351367ce re PR middle-end/44790 (Bootstrap fails after MEM-REF merge)
PR middle-end/44790
	PR middle-end/44993
	* expr.c (expand_expr_real_1) <MEM_REF>: Revert latest change.  Make
	sure the base has address_mode before adding the offset.

From-SVN: r162618
2010-07-28 07:44:34 +00:00
Eric Botcazou
51680dfb02 Fix typos
From-SVN: r162617
2010-07-28 05:23:28 +00:00
Xinliang David Li
880a145176 Fix to expose more LIM when creating mem_ref
From-SVN: r162616
2010-07-28 05:08:24 +00:00
GCC Administrator
6fb58a378d Daily bump.
From-SVN: r162615
2010-07-28 00:17:01 +00:00
Jason Merrill
462aa169ac pt.c (tsubst_expr): Handle getting an AGGR_INIT_EXPR from build_value_init.
* pt.c (tsubst_expr) [DECL_EXPR]: Handle getting an AGGR_INIT_EXPR
	from build_value_init.
	* init.c (build_value_init_noctor): Give error for unknown array
	bound.

From-SVN: r162603
2010-07-27 18:06:03 -04:00
Bernd Schmidt
418e920fc6 rtl.def (DEBUG_INSN, [...]): Swap operands 4 and 5.
* rtl.def (DEBUG_INSN, INSN, JUMP_INSN, CALL_INSN, NOTE): Swap operands
	4 and 5.
	* rtl.h (PATTERN, INSN_LOCATOR, NOTE_DATA, NOTE_DELETED_LABEL_NAME,
	NOTE_BLOCK, NOTE_EH_HANDLER, NOTE_BASIC_BLOCK, NOTE_VAR_LOCATION,
	NOTE_KIND, LABEL_NUSES, LABEL_REFS): Adjust accordingly.
	* gengtype.c (adjust_field_rtx_def): Swap operands 4 and 5 of
	CODE_LABELs and NOTEs.
	* caller-save.c (init_caller_save): Fix up gen_rtx_INSN call.
	* combine.c (try_combine): Likewise.
	* ira.c (setup_prohibited_mode_move_regs): Likewise.
	* print-rtl.c (print_rtx): Start REG_NOTES on a new line.

From-SVN: r162602
2010-07-27 21:52:39 +00:00
Joseph Myers
5f20c6574d coretypes.h (struct cl_option_handlers): Declare.
* coretypes.h (struct cl_option_handlers): Declare.
	* hooks.c (hook_int_size_t_constcharptr_int_0): Remove.
	* hooks.h (hook_int_size_t_constcharptr_int_0): Remove.
	* langhooks-def.h (lhd_handle_option): Declare.
	(LANG_HOOKS_HANDLE_OPTION): Use lhd_handle_option.
	* langhooks.c (lhd_handle_option): New.
	* langhooks.h (struct lang_hooks): Update prototype and return
	value type of handle_option hook.
	* optc-gen.awk: Generate target_flags_explicit definition for the
	driver.
	* opts-common.c: Include diagnostic.h.
	(handle_option): Move from opts.c.  Update prototype and return
	value type.  Use handlers structure.
	(read_cmdline_option): Move from opts.c.  Update prototype.  Use
	handlers structure.
	(set_option): Move from opts.c.
	* opts.c (common_handle_option): Update prototype and return value
	type.  Update calls to handle_option and enable_warning_as_error.
	(unknown_option_callback, post_handling_callback,
	lang_handle_option, target_handle_option): New.
	(handle_option, read_cmdline_option): Move to opts-common.c.
	(read_cmdline_options): Update prototype.  Update call to
	read_cmdline_option.
	(decode_options): Initialize and use handlers structure.
	(set_option): Move to opts-common.c.
	(enable_warning_as_error): Update prototype.  Update call to
	handle_option.
	* opts.h (struct cl_option_handler_func, struct
	cl_option_handlers): New.
	(handle_option, enable_warning_as_error): Update prototypes.
	(read_cmdline_option): Declare.
	* Makefile.in (opts-common.o): Update dependencies.

ada:
	* gcc-interface/misc.c (gnat_handle_option): Update prototype and
	return value type.  Don't check for missing arguments here.

c-family:
	* c-common.h (c_common_handle_option): Update prototype and return
	value type.
	* c-opts.c (c_common_handle_option): Update prototype and return
	value type.  Update calls to handle_option and
	enable_warning_as_error.

fortran:
	* gfortran.h (gfc_handle_option): Update prototype and return
	value type.
	* options.c (gfc_handle_option): Update prototype and return value
	type.

java:
	* lang.c (java_handle_option): Update prototype and return value
	type.

lto:
	* lto-lang.c (lto_handle_option): Update prototype and return
	value type.  Remove duplicate assignment to result.

From-SVN: r162601
2010-07-27 22:23:53 +01:00
Maxim Kuvyrkov
689d6c4a78 re PR rtl-optimization/40956 (Constants are never candidates for hoisting)
PR rtl-optimization/40956
	PR target/42495
	PR middle-end/42574
	* gcc.target/arm/pr40956.c, gcc.target/arm/pr42495.c,
	* gcc.target/arm/pr42574.c: Add tests.

From-SVN: r162600
2010-07-27 21:06:31 +00:00
Maxim Kuvyrkov
ec3728adb8 arm.c (params.h): Include.
* config/arm/arm.c (params.h): Include.
	(arm_override_options): Tune gcse-unrestricted-cost.
	* config/arm/t-arm (arm.o): Define dependencies.

From-SVN: r162598
2010-07-27 19:50:08 +00:00
Maxim Kuvyrkov
cad9aa150b re PR target/42495 (redundant memory load)
PR target/42495
	PR middle-end/42574
	* basic-block.h (get_dominated_to_depth): Declare.
	* dominance.c (get_dominated_to_depth): New function, use
	get_all_dominated_blocks as a base.
	(get_all_dominated_blocks): Use get_dominated_to_depth.

	* gcse.c (occr_t, VEC (occr_t, heap)): Define.
	(hoist_exprs): Remove.
	(alloc_code_hoist_mem, free_code_hoist_mem): Update.
	(compute_code_hoist_vbeinout): Add debug print outs.
	(hoist_code): Partially rewrite, simplify.  Use get_dominated_to_depth.

	* params.def (PARAM_MAX_HOIST_DEPTH): New parameter to avoid
	quadratic behavior.
	* params.h (MAX_HOIST_DEPTH): New macro.
	* doc/invoke.texi (max-hoist-depth): Document.

From-SVN: r162597
2010-07-27 19:48:15 +00:00
Maxim Kuvyrkov
9b9ee6d392 re PR rtl-optimization/40956 (Constants are never candidates for hoisting)
PR rtl-optimization/40956
	* config/arm/arm.c (thumb1_size_rtx_costs): Fix cost of simple
	constants.

From-SVN: r162596
2010-07-27 19:46:26 +00:00
Maxim Kuvyrkov
d37c3c6271 re PR target/42495 (redundant memory load)
PR target/42495
	PR middle-end/42574
	* config/arm/arm.c (legitimize_pic_address): Use
	gen_calculate_pic_address pattern to emit calculation of PIC address.
	(will_be_in_index_register): New function.
	(arm_legitimate_address_outer_p, thumb2_legitimate_address_p,)
	(thumb1_legitimate_address_p): Use it provided !strict_p.
	* config/arm/arm.md (calculate_pic_address): New expand and split.

From-SVN: r162595
2010-07-27 19:44:51 +00:00
Maxim Kuvyrkov
3393e880c6 re PR target/42495 (redundant memory load)
PR target/42495
	PR middle-end/42574
	* config/arm/arm.c (thumb1_size_rtx_costs): Add cost for "J" constants.
	* config/arm/arm.md (define_split "J", define_split "K"): Make
	IRA/reload friendly.

From-SVN: r162594
2010-07-27 19:42:15 +00:00
Maxim Kuvyrkov
eae7938e45 gcse.c (insert_insn_end_basic_block): Update signature, remove unused checks.
* gcse.c (insert_insn_end_basic_block): Update signature, remove
	unused checks.
	(pre_edge_insert, hoist_code): Update.

From-SVN: r162593
2010-07-27 19:39:15 +00:00