138526 Commits

Author SHA1 Message Date
David Malcolm
0e50b62468 Replace line_map union with C++ class hierarchy
gcc/ChangeLog:
	* diagnostic.c (diagnostic_report_current_module): Strengthen
	local "new_map" from const line_map * to
	const line_map_ordinary *.
	* genmatch.c (error_cb): Likewise for local "map".
	(output_line_directive): Likewise for local "map".
	* input.c (expand_location_1): Likewise for local "map".
	Pass NULL rather than &map to
	linemap_unwind_to_first_non_reserved_loc, since the value is never
	read from there, and the value written back not read from here.
	(is_location_from_builtin_token): Strengthen local "map" from
	const line_map * to const line_map_ordinary *.
	(dump_location_info): Strengthen locals "map" from
	line_map *, one to const line_map_ordinary *, the other
	to const line_map_macro *.
	* tree-diagnostic.c (loc_map_pair): Strengthen field "map" from
	const line_map * to const line_map_macro *.
	(maybe_unwind_expanded_macro_loc): Add a call to
	linemap_check_macro when writing to the "map" field of the
	loc_map_pair.
	Introduce local const line_map_ordinary * "ord_map", using it in
	place of "map" in the part of the function where we know we have
	an ordinary map.  Strengthen local "m" from const line_map * to
	const line_map_ordinary *.

gcc/ada/ChangeLog:
	* gcc-interface/trans.c (Sloc_to_locus1): Strenghthen local "map"
	from line_map * to line_map_ordinary *.

gcc/c-family/ChangeLog:
	* c-common.h (fe_file_change): Strengthen param from
	const line_map * to const line_map_ordinary *.
	(pp_file_change): Likewise.
	* c-lex.c (fe_file_change): Likewise.
	(cb_define): Use linemap_check_ordinary when invoking
	SOURCE_LINE.
	(cb_undef): Likewise.
	* c-opts.c (c_finish_options): Use linemap_check_ordinary when
	invoking cb_file_change.
	(c_finish_options): Likewise.
	(push_command_line_include): Likewise.
	(cb_file_change): Strengthen param "new_map" from
	const line_map * to const line_map_ordinary *.
	* c-ppoutput.c (cb_define): Likewise for local "map".
	(pp_file_change): Likewise for param "map" and local "from".

gcc/fortran/ChangeLog:
	* cpp.c (maybe_print_line): Strengthen local "map" from
	const line_map * to const line_map_ordinary *.
	(cb_file_change): Likewise for param "map" and local "from".
	(cb_line_change): Likewise for local "map".

libcpp/ChangeLog:
	* directives.c (do_line): Strengthen local "map" from
	const line_map * to const line_map_ordinary *.
	(do_linemarker): Likewise.
	(_cpp_do_file_change): Assert that we're not dealing with
	a macro map.  Introduce local "ord_map" via a call to
	linemap_check_ordinary, guarded within the check for
	non-NULL.  Use it for typesafety.
	* files.c (cpp_make_system_header): Strengthen local "map" from
	const line_map * to const line_map_ordinary *.
	* include/cpplib.h (struct cpp_callbacks): Likewise for second
	parameter of "file_change" callback.
	* include/line-map.h (struct line_map): Convert from a struct
	containing a union to a base class.
	(struct line_map_ordinary): Convert to a subclass of line_map.
	(struct line_map_macro): Likewise.
	(linemap_check_ordinary): Strengthen return type from line_map *
	to line_map_ordinary *, and add a const-variant.
	(linemap_check_macro): New pair of functions.
	(ORDINARY_MAP_STARTING_LINE_NUMBER): Strengthen param from
	const line_map * to const line_map_ordinary *, eliminating call
	to linemap_check_ordinary.  Likewise for the non-const variant.
	(ORDINARY_MAP_INCLUDER_FILE_INDEX): Likewise.
	(ORDINARY_MAP_IN_SYSTEM_HEADER_P): Likewise.
	(ORDINARY_MAP_NUMBER_OF_COLUMN_BITS): Likewise.
	(ORDINARY_MAP_FILE_NAME): Likewise.
	(MACRO_MAP_MACRO): Strengthen param from const line_map * to
	const line_map_macro *.  Likewise for the non-const variant.
	(MACRO_MAP_NUM_MACRO_TOKENS): Likewise.
	(MACRO_MAP_LOCATIONS): Likewise.
	(MACRO_MAP_EXPANSION_POINT_LOCATION): Likewise.
	(struct maps_info): Replace with...
	(struct maps_info_ordinary):...this and...
	(struct maps_info_macro): ...this.
	(struct line_maps): Convert fields "info_ordinary" and
	"info_macro" to the above new structs.
	(LINEMAPS_MAP_INFO): Delete both functions.
	(LINEMAPS_MAPS): Likewise.
	(LINEMAPS_ALLOCATED): Rewrite both variants to avoid using
	LINEMAPS_MAP_INFO.
	(LINEMAPS_USED): Likewise.
	(LINEMAPS_CACHE): Likewise.
	(LINEMAPS_MAP_AT): Likewise.
	(LINEMAPS_ORDINARY_MAPS): Strengthen return type from line_map *
	to line_map_ordinary *.
	(LINEMAPS_ORDINARY_MAP_AT): Likewise.
	(LINEMAPS_LAST_ORDINARY_MAP): Likewise.
	(LINEMAPS_LAST_ALLOCATED_ORDINARY_MAP): Likewise.
	(LINEMAPS_MACRO_MAPS): Strengthen return type from line_map * to
	line_map_macro *.
	(LINEMAPS_MACRO_MAP_AT): Likewise.
	(LINEMAPS_LAST_MACRO_MAP): Likewise.
	(LINEMAPS_LAST_ALLOCATED_MACRO_MAP): Likewise.
	(linemap_map_get_macro_name): Strengthen param from
	const line_map * to const line_map_macro *.
	(SOURCE_LINE): Strengthen first param from const line_map * to
	const line_map_ordinary *, removing call to
	linemap_check_ordinary.
	(SOURCE_COLUMN): Likewise.
	(LAST_SOURCE_LINE_LOCATION): Likewise.
	(LAST_SOURCE_LINE): Strengthen first param from const line_map *
	to const line_map_ordinary *.
	(LAST_SOURCE_COLUMN): Likewise.
	(INCLUDED_FROM): Strengthen return type from line_map * to
	line_map_ordinary *., and second param from const line_map *
	to const line_map_ordinary *, removing call to
	linemap_check_ordinary.
	(MAIN_FILE_P): Strengthen param from const line_map * to
	const line_map_ordinary *, removing call to
	linemap_check_ordinary.
	(linemap_position_for_line_and_column): Strengthen param from
	const line_map * to const line_map_ordinary *.
	(LINEMAP_FILE): Strengthen param from const line_map * to
	const line_map_ordinary *, removing call to
	linemap_check_ordinary.
	(LINEMAP_LINE): Likewise.
	(LINEMAP_SYSP): Likewise.
	(linemap_resolve_location): Strengthen final param from
	const line_map ** to const line_map_ordinary **.
	* internal.h (CPP_INCREMENT_LINE): Likewise for local "map".
	(linemap_enter_macro): Strengthen return type from
	const line_map * to const line_map_macro *.
	(linemap_add_macro_token): Likewise for first param.
	* line-map.c (linemap_check_files_exited): Strengthen local "map"
	from const line_map * to const line_map_ordinary *.
	(new_linemap): Introduce local "map_size" and use it when
	calculating how large the buffer should be.  Rewrite based
	on change of info_macro and info_ordinary into distinct types.
	(linemap_add): Strengthen locals "map" and "from" from line_map *
	to line_map_ordinary *.
	(linemap_enter_macro): Strengthen return type from
	const line_map * to const line_map_macro *, and local "map" from
	line_map * to line_map_macro *.
	(linemap_add_macro_token): Strengthen param "map" from
	const line_map * to const line_map_macro *.
	(linemap_line_start): Strengthen local "map" from line_map * to
	line_map_ordinary *.
	(linemap_position_for_column): Likewise.
	(linemap_position_for_line_and_column): Strengthen first param
	from const line_map * to const line_map_ordinary *.
	(linemap_position_for_loc_and_offset): Strengthen local "map" from
	const line_map * to const line_map_ordinary *.
	(linemap_ordinary_map_lookup): Likewise for return type and locals
	"cached" and "result".
	(linemap_macro_map_lookup): Strengthen return type and locals
	"cached" and "result" from const line_map * to
	const line_map_macro *.
	(linemap_macro_map_loc_to_exp_point): Likewise for param "map".
	(linemap_macro_map_loc_to_def_point): Likewise.
	(linemap_macro_map_loc_unwind_toward_spelling): Likewise.
	(linemap_get_expansion_line): Strengthen local "map" from
	const line_map * to const line_map_ordinary *.
	(linemap_get_expansion_filename): Likewise.
	(linemap_map_get_macro_name): Strengthen param from
	const line_map * to const line_map_macro *.
	(linemap_location_in_system_header_p): Add call to
	linemap_check_ordinary in region guarded by
	!linemap_macro_expansion_map_p.  Introduce local "macro_map" via
	linemap_check_macro in other region, using it in place of "map"
	for typesafety.
	(first_map_in_common_1): Add calls to linemap_check_macro.
	(trace_include): Strengthen param "map" from const line_map * to
	const line_map_ordinary *.
	(linemap_macro_loc_to_spelling_point): Strengthen final param from
	const line_map ** to const line_map_ordinary **.  Replace a
	C-style cast with a const_cast, and add calls to
	linemap_check_macro and linemap_check_ordinary.
	(linemap_macro_loc_to_def_point): Likewise.
	(linemap_macro_loc_to_exp_point): Likewise.
	(linemap_resolve_location): Strengthen final param from
	const line_map ** to const line_map_ordinary **.
	(linemap_unwind_toward_expansion): Introduce local "macro_map" via
	a checked cast and use it in place of *map.
	(linemap_unwind_to_first_non_reserved_loc): Strengthen local
	"map1" from const line_map * to const line_map_ordinary *.
	(linemap_expand_location): Introduce local "ord_map" via a checked
	cast and use it in place of map.
	(linemap_dump): Make local "map" const.  Strengthen local
	"includer_map" from line_map * to const line_map_ordinary *.
	Introduce locals "ord_map" and "macro_map" via checked casts and
	use them in place of "map" for typesafety.
	(linemap_dump_location): Strengthen local "map" from
	const line_map * to const line_map_ordinary *.
	(linemap_get_file_highest_location): Update for elimination of
	union.
	(linemap_get_statistics): Strengthen local "cur_map" from
	line_map * to const line_map_macro *.  Update uses of sizeof to
	use the appropriate line_map subclasses.
	* macro.c (_cpp_warn_if_unused_macro): Add call to
	linemap_check_ordinary.
	(builtin_macro): Strengthen local "map" from const line_map * to
	const line_map_macro *.
	(enter_macro_context): Likewise.
	(replace_args): Likewise.
	(tokens_buff_put_token_to): Likewise for param "map".
	(tokens_buff_add_token): Likewise.

From-SVN: r223365
2015-05-19 13:18:01 +00:00
Ramana Radhakrishnan
49c6543450 Add cpu_defines.h for ARM.
2015-05-17  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	* configure.host: Define cpu_defines_dir for ARM.
	* config/cpu/arm/cpu_defines.h: New file.

From-SVN: r223361
2015-05-19 12:47:50 +00:00
Nick Clifton
bdafd67926 re PR rtl-optimization/66156 ([msp430] wrong code generated with -O2 -mlarge (zero extension HI -> SI))
PR target/66156
	* config/msp430/msp430.md (zero_extendhisi2): Add support for
	separate source and destination registers.

From-SVN: r223354
2015-05-19 11:42:44 +00:00
Rainer Orth
057c74c7c5 Fix gcc.dg/vect/bb-slp-35.c on SPARC
* gcc.dg/vect/bb-slp-35.c: Adjust.

From-SVN: r223353
2015-05-19 11:40:44 +00:00
Julian Brown
c831982647 plugin-nvptx.c (nvptx_get_num_devices): Return zero on cuInit failure.
* plugin/plugin-nvptx.c (nvptx_get_num_devices): Return zero
	on cuInit failure.

From-SVN: r223352
2015-05-19 11:06:31 +00:00
Richard Biener
9626d143b9 re PR tree-optimization/66165 (vect_transform_slp_perm_load: vec out of range ?)
2015-05-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/66165
	* tree-vect-slp.c (vect_supported_load_permutation_p): Add guard
	for no load permutation.

	* gcc.dg/torture/pr66165.c: New testcase.

	PR tree-optimization/66185
	* tree-vect-slp.c (vect_build_slp_tree): Properly roll back
	when building the SLP node from scalars.

	* gcc.dg/torture/pr66185.c: New testcase.

From-SVN: r223349
2015-05-19 09:36:35 +00:00
Eric Botcazou
d33606c306 insn-notes.def (UPDATE_SJLJ_CONTEXT): New note.
* insn-notes.def (UPDATE_SJLJ_CONTEXT): New note.
	* builtins.c (expand_builtin_update_setjmp_buf): Make global.
	(expand_stack_restore): Call record_new_stack_level.
	(expand_stack_save): Do not call do_pending_stack_adjust.
	* builtins.h (expand_builtin_update_setjmp_buf): Declare.
	* calls.c (expand_call): Call record_new_stack_level for alloca.
	* except.c (sjlj_mark_call_sites): Expand builtin_update_setjmp_buf
	wherever a NOTE_INSN_UPDATE_SJLJ_CONTEXT note is present.
	(update_sjlj_context): New global function.
	* except.h (update_sjlj_context): Declare.
	* explow.c (record_new_stack_level): New global function.
	(allocate_dynamic_stack_space): Call record_new_stack_level.
	* explow.h (record_new_stack_level): Declare.
	* final.c (final_scan_insn): Deal with NOTE_INSN_UPDATE_SJLJ_CONTEXT.
	* cfgrtl.c (duplicate_insn_chain): Likewise.

Co-Authored-By: Tristan Gingold <gingold@adacore.com>

From-SVN: r223348
2015-05-19 09:33:27 +00:00
Kyrylo Tkachov
76e048a8c0 [calls.c] Remove #ifdef checks on STACK_GROWS_DOWNWARD
* calls.c: Always define STACK_GROWS_DOWNWARD as 0 or 1.
	(mem_overlaps_already_clobbered_arg_p): Rewrite ifdef
	STACK_GROWS_DOWNWARD as normal if.
	(expand_call): Likewise.

From-SVN: r223347
2015-05-19 08:43:17 +00:00
Oleg Endo
d0ae0f51fa re PR target/54236 ([SH] Improve addc and subc insn utilization)
gcc/
	PR target/54236
	* config/sh/sh.md (*round_int_even): New insn_and_split and
	accompanying new unnamed split.

gcc/testsuite/
	PR target/54236
	* gcc.target/sh/pr54236-2.c: Adjust expected insn counts.

From-SVN: r223346
2015-05-19 08:00:41 +00:00
Richard Sandiford
07a737f333 bitmap.c (bitmap_set_range): Handle count==1 specially.
gcc/
	* bitmap.c (bitmap_set_range): Handle count==1 specially.
	(bitmap_clear_range): Likewise.
	* cfgcleanup.c (mark_effect): Use bitmap_clear_range and
	bitmap_set_range unconditionally.
	* df-problems.c (df_simulate_one_insn_forwards): Likewise.
	* df-scan.c (df_mark_reg): Likewise.
	* haifa-sched.c (setup_ref_regs): Likewise.
	* sched-rgn.c (update_live_1): Likewise.

From-SVN: r223344
2015-05-19 07:11:37 +00:00
Richard Sandiford
72d19505ee regs.h (END_HARD_REGNO): Delete.
gcc/
	* regs.h (END_HARD_REGNO): Delete.
	(END_REGNO): Move to...
	* rtl.h: ...here.
	* bt-load.c (note_btr_set): Use END_REGNO instead of END_HARD_REGNO.
	* caller-save.c (mark_set_regs): Likewise.
	* combine.c (move_deaths, distribute_notes): Likewise.
	* cse.c (invalidate, invalidate_for_call): Likewise.
	* df-scan.c (df_ref_record): Likewise.
	* postreload-gcse.c (reg_changed_after_insn_p): Likewise.
	(record_last_reg_set_info): Likewise.
	* reg-stack.c (convert_regs_exit): Likewise.
	* reload.c (reg_overlap_mentioned_for_reload_p): Likewise.
	* resource.c (update_live_status): Likewise.
	* rtlanal.c (find_reg_fusage, find_regno_fusage): Likewise.

From-SVN: r223343
2015-05-19 07:11:18 +00:00
Richard Sandiford
9188b2863c rtl.h (reg_info): Add an nregs field.
gcc/
	* rtl.h (reg_info): Add an nregs field.
	(REG_NREGS): Use it.
	(SET_REGNO_RAW): Delete.
	(set_regno_raw): New function.
	* regs.h (END_HARD_REGNO): Make equivalent to END_REGNO.
	(END_REGNO): Redefine in terms of REG_NREGS.
	* read-rtl.c (read_rtx_code): Call set_regno_raw instead of
	SET_REGNO_RAW.
	* emit-rtl.c (set_mode_and_regno): Likewise.
	* df-scan.c (df_ref_change_reg_with_loc): Use set_mode_and_regno
	instead of SET_REGNO_RAW.

From-SVN: r223342
2015-05-19 07:10:42 +00:00
Richard Sandiford
8deccbb7c8 rtl.h (PUT_MODE_RAW): New macro.
gcc/
	* rtl.h (PUT_MODE_RAW): New macro.
	(PUT_REG_NOTE_KIND): Use it.
	(set_mode_and_regno): Declare.
	(gen_raw_REG): Change regno to "unsigned int".
	(gen_rtx_REG): Change "unsigned" to "unsigned int".
	(PUT_MODE): Forward to PUT_MODE_RAW for generators, otherwise
	use set_mode_and_regno to change the mode of registers.
	* gengenrtl.c (gendef): Use PUT_MODE_RAW.
	* emit-rtl.c (set_mode_and_regno): New function.
	(gen_raw_REG): Change regno to unsigned int.  Use set_mode_and_regno.
	* caller-save.c (reg_save_code): Use set_mode_and_regno.
	* expr.c (init_expr_target): Likewise.
	* ira.c (setup_prohibited_mode_move_regs): Likewise.
	* postreload.c (reload_cse_simplify_operands): Likewise.

From-SVN: r223341
2015-05-19 07:10:30 +00:00
Richard Sandiford
5d2446b1ed caller-save.c (init_caller_save): Use word_mode and FIRST_PSEUDO_REGISTER when creating temporary rtxes.
gcc/
	* caller-save.c (init_caller_save): Use word_mode and
	FIRST_PSEUDO_REGISTER when creating temporary rtxes.
	* expr.c (init_expr_target): Likewise.
	* ira.c (setup_prohibited_mode_move_regs): Likewise.
	* postreload.c (reload_cse_regs_1): Likewise.

From-SVN: r223340
2015-05-19 07:10:15 +00:00
Richard Sandiford
9fccb33594 rtl.def (REG): Change format to "r".
gcc/
	* rtl.def (REG): Change format to "r".
	* rtl.h (rtunion): Remove rt_reg.
	(reg_info): New structure.
	(rtx_def): Add reg field to main union.
	(X0REGATTR): Delete.
	(REG_CHECK): New macro.
	(SET_REGNO_RAW, rhs_regno, REG_ATTRS): Use it.
	* rtl.c (rtx_format): Document "r".
	(rtx_code_size): Handle REG specially.
	* gengenrtl.c (special_format): Return true for formats
	that include 'r'.
	* gengtype.c (adjust_field_rtx_def): Handle 'r' fields.
	Deal with REG_ATTRS after the field loop.
	* emit-rtl.c (gen_raw_REG): Call rtx_alloc_stat directly.
	* expmed.c (init_expmed): Call gen_raw_REG instead of
	gen_rtx_raw_REG.
	* expr.c (init_expr_target): Likewise.
	* regcprop.c (maybe_mode_change): Likewise.
	* varasm.c (make_decl_rtl): Likewise.
	* final.c (leaf_renumber_regs_insn): Return early after
	handling REGs.
	* genemit.c (gen_exp): Handle 'r' fields.
	* genpeep.c (match_rtx): Likewise.
	* gensupport.c (subst_pattern_match): Likewise.
	(get_alternatives_number, collect_insn_data, alter_predicate_for_insn)
	(alter_constraints, subst_dup): Likewise.
	* read-rtl.c (read_rtx_code): Likewise.
	* print-rtl.c (print_rtx): Likewise.
	* genrecog.c (find_operand, find_matching_operand): Likewise.
	(validate_pattern, match_pattern_2): Likewise.
	(parameter::UINT, rtx_test::REGNO_FIELD): New enum values.
	(rtx_test::regno_field): New function.
	(operator ==, safe_to_hoist_p, transition_parameter_type)
	(parameter_type_string, print_parameter_value)
	(print_nonbool_test, print_test): Handle new enum values.
	* cselib.c (rtx_equal_for_cselib_1): Handle REG specially.
	* lra-constraints.c (operands_match_p): Likewise.

From-SVN: r223339
2015-05-19 07:09:42 +00:00
Richard Sandiford
e1a2b02198 df.h (df_ref_change_reg_with_loc): Remove old_regno parameter.
gcc/
	* df.h (df_ref_change_reg_with_loc): Remove old_regno parameter.
	Change type of new_regno to unsigned int.
	* df-scan.c (df_ref_change_reg_with_loc_1): Change type of
	new_regno to unsigned int.
	(df_ref_change_reg_with_loc): Remove old_regno parameter.
	Change type of new_regno to unsigned int.  Use SET_REGNO_RAW.
	* rtl.h (SET_REGNO): Update call to df_ref_change_reg_with_loc.
	(SET_REGNO_RAW): Add space after ",".

From-SVN: r223338
2015-05-19 07:09:23 +00:00
Richard Sandiford
dc8afb709d rtl.h (REG_NREGS): New macro
gcc/
	* rtl.h (REG_NREGS): New macro
	* alias.c (record_set): Use it.
	* cfgcleanup.c (mark_effect): Likewise.
	* combine.c (likely_spilled_retval_1): Likewise.
	(likely_spilled_retval_p, can_change_dest_mode): Likewise.
	(move_deaths, distribute_notes): Likewise.
	* cselib.c (cselib_record_set): Likewise.
	* df-problems.c (df_simulate_one_insn_forwards): Likewise.
	* df-scan.c (df_mark_reg): Likewise.
	* dse.c (look_for_hardregs): Likewise.
	* dwarf2out.c (reg_loc_descriptor): Likewise.
	(multiple_reg_loc_descriptor): Likewise.
	* expr.c (write_complex_part, read_complex_part): Likewise.
	(emit_move_complex): Likewise.
	* haifa-sched.c (setup_ref_regs): Likewise.
	* ira-lives.c (mark_hard_reg_live): Likewise.
	* lra.c (lra_set_insn_recog_data): Likewise.
	* mode-switching.c (create_pre_exit): Likewise.
	* postreload.c (reload_combine_recognize_const_pattern): Likewise.
	(reload_combine_recognize_pattern): Likewise.
	(reload_combine_note_use, move2add_record_mode): Likewise.
	(reload_cse_move2add): Likewise.
	* reg-stack.c (subst_stack_regs_pat): Likewise.
	* regcprop.c (kill_value, copy_value): Likewise.
	(copyprop_hardreg_forward_1): Likewise.
	* regrename.c (verify_reg_in_set, scan_rtx_reg): Likewise.
	(build_def_use): Likewise.
	* sched-deps.c (mark_insn_reg_birth, mark_reg_death): Likewise.
	(deps_analyze_insn): Likewise.
	* sched-rgn.c (check_live_1, update_live_1): Likewise.
	* sel-sched.c (count_occurrences_equiv): Likewise.
	* valtrack.c (dead_debug_insert_temp): Likewise.

From-SVN: r223337
2015-05-19 07:09:06 +00:00
Richard Sandiford
53d1bae901 cfgcleanup.c (mentions_nonequal_regs): Use END_REGNO.
gcc/
	* cfgcleanup.c (mentions_nonequal_regs): Use END_REGNO.
	* dse.c (note_add_store): Likewise.
	* ira-lives.c (mark_hard_reg_dead): Likewise.
	* loop-invariant.c (mark_reg_store): Likewise.
	(mark_reg_death): Likewise.
	* postreload.c (reload_combine): Likewise.
	(reload_combine_note_store): Likewise.
	(reload_combine_note_use): Likewise.
	* recog.c (peep2_reg_dead_p): Likewise.

From-SVN: r223336
2015-05-19 07:08:49 +00:00
Alan Modra
8a480dc3d0 predicates.md (gpc_reg_operand): Don't allow all hard registers numbered greater or equal to ARG_POINTER_REGNUM.
* config/rs6000/predicates.md (gpc_reg_operand): Don't allow all
	hard registers numbered greater or equal to ARG_POINTER_REGNUM.
	(reg_or_neg_short_operand, fix_trunc_dest_operand): Delete
	unused predicates.
	* config/rs6000/altivec.md (save_vregs_*, restore_vregs_*):
	Use altivec_register_operand.  Make insn predicate TARGET_ALTIVEC.
	* config/rs6000/rs6000.md (extzvdi_internal2): Use cc_reg_operand.
	* config/rs6000/vsx.md (vsx_float<VSi><mode>2): Expand comment.

From-SVN: r223335
2015-05-19 15:40:58 +09:30
Prachi Godbole
abf96035ef mips.md (JOIN_MODE): New mode iterator.
gcc/
	* config/mips/mips.md (JOIN_MODE): New mode iterator.
	(join2_load_Store<JOIN_MODE:mode>): New pattern.
	(join2_loadhi): Likewise.
	(define_peehole2): Add peephole2 patterns to join 2 HI/SI/SF/DF-mode
	load-load and store-stores.
	* config/mips/mips.opt (mload-store-pairs): New option.
	(TARGET_LOAD_STORE_PAIRS): New macro.
	* config/mips/mips.h (ENABLE_LD_ST_PAIRS): Likewise.
	* config/mips/mips-protos.h (mips_load_store_bonding_p): New prototype.
	* config/mips/mips.c (mips_load_store_bonding_p): New function.

gcc/testsuite/
	* gcc.target/mips/p5600-bonding.c : New file.

From-SVN: r223334
2015-05-19 05:06:03 +00:00
Mikhail Maltsev
fab27f5289 Use std::swap instead of explicit swaps
gcc/
	* bb-reorder.c (fix_up_fall_thru_edges): Use std::swap instead of
	explicit swaps.
	* dojump.c (do_compare_rtx_and_jump): Likewise.
	* expmed.c (emit_store_flag_1): Likewise.
	* fibonacci_heap.h (fibonacci_heap::union_with): Likewise.
	* final.c (sprint_ul): Use std::reverse for reversing a string.
	* fold-const.c (extract_muldiv_1): Use std::swap.
	* genmodes.c (emit_mode_int_n): Likewise.
	* ifcvt.c (dead_or_predicable): Likewise.
	* ira-build.c (ira_merge_live_ranges): Likewise.
	(swap_allocno_copy_ends_if_necessary): Likewise.
	* ira.c (ira_setup_alts): Likewise.
	* loop-iv.c (iv_analyze_expr): Likewise.
	(implies_p): Likewise.
	(canon_condition): Likewise.
	* lra-constraints.c (swap_operands): Likewise.
	* lra-lives.c (lra_merge_live_ranges): Likewise.
	* omega.c (swap): Remove.
	(bswap): Remove.
	(omega_unprotect_1): Use std::swap.
	(omega_solve_geq): Likewise.
	* optabs.c (expand_binop_directly): Likewise.
	(expand_binop): Likewise.
	(emit_conditional_move): Likewise.
	(emit_conditional_add): Likewise.
	* postreload.c (reload_cse_simplify_operands): Likewise.
	* reg-stack.c (emit_swap_insn): Likewise.
	(swap_to_top): Likewise.
	(compare_for_stack_reg): Likewise.
	(subst_asm_stack_regs): Likewise.
	* reload.c (find_reloads): Likewise.
	* reload1.c (gen_reload_chain_without_interm_reg_p): Likewise.
	* sel-sched.c (invoke_reorder_hooks): Likewise.
	(create_block_for_bookkeeping): Likewise.
	* tree-data-ref.c (lambda_matrix_row_exchange): Remove.
	(lambda_matrix_right_hermite): Use std::swap.
	* tree-ssa-coalesce.c (sort_coalesce_list): Likewise.
	* tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
	* tree-ssa-loop-ivopts.c (iv_ca_delta_reverse): Likewise.
	* tree-ssa-math-opts.c (is_widening_mult_p): Likewise.
	* tree-ssa-phiopt.c (hoist_adjacent_loads): Likewise.
	* tree-ssa-reassoc.c (linearize_expr_tree): Likewise.
	* tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
	* tree-vrp.c (compare_ranges): Likewise.
	* var-tracking.c (add_with_sets): Likewise.
	(vt_find_locations): Likewise.

gcc/c/
	* c-typeck.c (build_array_ref): Use std::swap instead of explicit
	swaps

gcc/cp/
	* typeck.c (composite_pointer_type): Use std::swap instead of explicit
	swaps.

gcc/c-family/
	* c-common.c (shorten_compare): Use std::swap instead of explicit swaps.

gcc/fortran/
	* interface.c (compare_actual_formal): Use std::swap instead of
	explicit swaps.
	* trans-array.c (gfc_trans_scalarized_loop_end): Likewise.
	* trans-intrinsic.c (walk_inline_intrinsic_transpose): Likewise.

From-SVN: r223332
2015-05-19 04:24:31 +00:00
GCC Administrator
de7fe08778 Daily bump.
From-SVN: r223330
2015-05-19 00:16:14 +00:00
Steven G. Kargl
898344a944 re PR fortran/66057 (ICE for incomplete generic statement (gfc_match_generic))
2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66057
	* interface.c(gfc_match_end_interface): Enforce F2008 C1202 (R1201).
	* match.c(gfc_op2string): Return 'none' for INTRINSIC_NONE.


2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66057
	* gfortran.dg/interface_operator_1.f90: New tests.

From-SVN: r223326
2015-05-18 23:26:38 +00:00
Steven G. Kargl
377e37c159 re PR fortran/66057 (ICE for incomplete generic statement (gfc_match_generic))
2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66057
	* decl.c(gfc_match_generic):  Detected a malformed GENERIC statement.

2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66057
	* gfortran.dg/generic_29.f90: New tests.

From-SVN: r223325
2015-05-18 23:09:49 +00:00
Steven G. Kargl
73641c881f re PR fortran/66052 (Segmentation fault for misplaced protected statement)
2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66052
	* decl.c(gfc_match_protected): Prevent dereference of NULL pointer. 

2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66052
	* gfortran.dg/protected_9.f90: New test.

From-SVN: r223324
2015-05-18 22:52:52 +00:00
Steven G. Kargl
bfeeb14516 re PR fortran/66045 (ICE on incorrect code with null)
2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66045
	* expr.c (gfc_check_assign):  Check for assignment of NULL() instead
	of the (intended) pointer assignment.

2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66045
	* gfortran.dg/null1.f90: New test.

From-SVN: r223322
2015-05-18 22:21:08 +00:00
Steven G. Kargl
fce523bf9b re PR fortran/66044 (ICE on misplaced entry statement)
2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66044
	* decl.c(gfc_match_entry):  Change a gfc_internal_error() into
	a gfc_error() 

2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66044
	* gfortran.dg/entry_21.f90: New test.

From-SVN: r223321
2015-05-18 22:06:48 +00:00
Steven G. Kargl
ce7fb7118f re PR fortran/66043 (ICE on storage_size of null or output of null array)
2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66043
	* check.c (gfc_check_storage_size): Prevent the direct use of NULL()
	in STORAGE_SIZE() reference.

2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66043
	* gfortran.dg/storage_size_6.f90: New tests.

From-SVN: r223320
2015-05-18 21:52:03 +00:00
Steven G. Kargl
46b6b3542d re PR fortran/66040 (ICE on misplaced sequence in function)
2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66040
	* parse.c(verify_st_order): Replace a gfc_internal_error with your
	generic gfc_error.

2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66040
	* gfortran.dg/misplaced_statement.f90: New test.

From-SVN: r223318
2015-05-18 21:16:05 +00:00
Joseph Myers
589ff4d209 * sv.po: Update.
From-SVN: r223316
2015-05-18 22:06:01 +01:00
Steven G. Kargl
20898e8096 re PR fortran/66039 (ICE on incomplete parentheses at rewind, flush, endfile, backspace)
2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66039
	* io.c (match_filepos): Check for incomplete/mangled REWIND, FLUSH,
	BACKSPACE, and ENDFILE statements

2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66039
	* gfortran.dg/filepos1.f90: New test

From-SVN: r223315
2015-05-18 21:04:33 +00:00
Jason Merrill
703245d706 revert: Makefile.in (GCC_WARN_CXXFLAGS): Add -std=c++98.
Revert:
	* Makefile.in (GCC_WARN_CXXFLAGS): Add -std=c++98.

From-SVN: r223314
2015-05-18 16:22:14 -04:00
Steven G. Kargl
f7c1c17192 re PR fortran/64925 (ICE with same names for dummy arg and internal procedure)
2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/64925
	* symbol.c(check_conflict):  Check for a conflict between a dummy
	argument and an internal procedure name.

2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/64925
	* gfortran.dg/pr64925.f90: New test.

From-SVN: r223313
2015-05-18 19:25:49 +00:00
Jason Merrill
87734648c9 * Makefile.in (GCC_WARN_CXXFLAGS): Add -std=c++98.
From-SVN: r223312
2015-05-18 15:21:54 -04:00
Steven G. Kargl
71c87d1c0f pr41521_0.f90: Move INTERFACE statement in program unit.
2015-05-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	* gfortran.dg/lto/pr41521_0.f90: Move INTERFACE statement in program
	unit.
	* gfortran.dg/lto/pr41576_1.f90: Ditto.

From-SVN: r223309
2015-05-18 18:59:48 +00:00
Andreas Tobler
8ea0dcb9e0 freebsd-spec.h (FBSD_STARTFILE_SPEC): Add the bits to build pie executables.
2015-05-18  Andreas Tobler  <andreast@gcc.gnu.org>

gcc:
        * config/freebsd-spec.h (FBSD_STARTFILE_SPEC): Add the bits to build
	pie executables.
	(FBSD_ENDFILE_SPEC): Likewise.
	* config/i386/freebsd.h (STARTFILE_SPEC): Remove and use the one from
	config/freebsd-spec.h.
	(ENDFILE_SPEC): Likewise.

gcc/testsuite:
	* lib/target-supports.exp (check_effective_target_pie): Add *-*-freebsd*
	to the family of pie capable targets.

From-SVN: r223308
2015-05-18 20:37:18 +02:00
Jason Merrill
f41aecf428 pt.c (retrieve_specialization): Make sure our arguments have gone through strip_typedefs.
* pt.c (retrieve_specialization): Make sure our arguments have
	gone through strip_typedefs.

From-SVN: r223305
2015-05-18 14:08:53 -04:00
Jason Merrill
b237c4cbd3 pt.c (tsubst_decl): Call coerce_innermost_template_parms.
* pt.c (tsubst_decl) [VAR_DECL]: Call coerce_innermost_template_parms.
	(determine_specialization): Call coerce_template_parms.

From-SVN: r223304
2015-05-18 14:08:48 -04:00
Jason Merrill
c4d6d7bc46 DR 1391
DR 1391
	* pt.c (type_unification_real): Check convertibility here.
	(unify_one_argument): Not here.

From-SVN: r223301
2015-05-18 13:14:11 -04:00
Jason Merrill
8f56fadc24 tree.c (strip_typedefs_expr): Fix typo.
* tree.c (strip_typedefs_expr) [TRAIT_EXPR]: Fix typo.
	(strip_typedefs) [DECLTYPE_TYPE]: Fix typedef of decltype.
	[TREE_LIST]: Fix no-change case.

From-SVN: r223300
2015-05-18 13:14:04 -04:00
Jason Merrill
80f1c14df5 * ptree.c (cxx_print_xnode): Handle TRAIT_EXPR.
From-SVN: r223299
2015-05-18 13:13:59 -04:00
Uros Bizjak
6f2ac3606e re PR rtl-optimization/57032 (internal compiler error: Max. number of generated reload insns per insn is achieved (90))
PR target/57032
	* config/alpha/constraints.md (Q): Rewrite as define_memory_constraint.
	Check for a memory location that is not a reference (using an AND)
	to an unaligned location here.
	* config/alpha/predicates.md (normal_memory_operand): Remove.


Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r223298
2015-05-18 18:34:23 +02:00
Tom de Vries
323eb6e3cf check_GNU_style.sh: Don't do 80 char check line by line
2015-05-18  Tom de Vries  <tom@codesourcery.com>

	* check_GNU_style.sh: Add temp files tmp2 and tmp3.
	(cat_with_prefix): New function, using global variable prefix.
	(col): Make prefix a global variable. Rewrite to process file at a time
	rather than line at a time.  Print part longer than 80 chars in red.

From-SVN: r223297
2015-05-18 15:44:55 +00:00
Alex Velenko
0454e69840 arm.md (andsi_not_shiftsi_si_scc): New pattern.
gcc/config

2015-05-18  Alex Velenko  <Alex.Velenko@arm.com>

  	* arm/arm.md (andsi_not_shiftsi_si_scc): New pattern.
  	(andsi_not_shiftsi_si_scc_no_reuse): New pattern.

gcc/testsuite

2015-05-18  Alex Velenko <Alex.Velenko@arm.com>

  	* gcc.target/arm/bics_1.c : New testcase.
  	* gcc.target/arm/bics_2.c : New testcase.
  	* gcc.target/arm/bics_3.c : New testcase.
  	* gcc.target/arm/bics_4.c : New testcase.

From-SVN: r223295
2015-05-18 14:38:41 +00:00
Robert Suchanek
fb05f2e4dd Fix ICE when both micromips and nomicromips attributes are used.
gcc/ChangeLog:

2015-05-18  Robert Suchanek  <robert.suchanek@imgtec.com>

	* config/mips/mips.c (micromips_globals): New variable.
	(mips_set_compression_mode): Save and reinitialize target-dependent
	state for microMIPS.

gcc/testsuite/ChangeLog:

2015-05-18  Robert Suchanek  <robert.suchanek@imgtec.com>

	* gcc.target/mips/umips-attr.c: New test.

From-SVN: r223294
2015-05-18 14:32:19 +00:00
Martin Liska
7aeb92b472 IPA ICF: add support for debug counter.
* dbgcnt.def: Add new counter.
	* ipa-icf.c (sem_item_optimizer::merge_classes): Use the
	counter.

From-SVN: r223288
2015-05-18 09:05:15 +00:00
Martin Liska
68d070ac6a dbgcnt: enhance behavior.
* dbgcnt.def: Sort counters.
	* opts.c (common_handle_option): Do not compile if
	-fdbg-cnt-list is enabled.

From-SVN: r223287
2015-05-18 09:03:28 +00:00
Tom de Vries
2fe1d762d6 Move array-type va_list handling to build_va_arg
2015-05-18  Tom de Vries  <tom@codesourcery.com>

	* gimplify.c (gimplify_modify_expr): Remove do_deref handling.
	(gimplify_va_arg_expr): Remove do_deref handling.  Remove adding of
	address operator to va_list operand.
	* tree-stdarg.c (expand_ifn_va_arg_1): Do deref of va_list operand
	unconditionally.
	* config/i386/i386.c (ix86_gimplify_va_arg): Remove deref on va_list
	operand.
	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Same.
	* config/s390/s390.c (s390_gimplify_va_arg): Same.
	* config/spu/spu.c (spu_gimplify_va_arg_expr): Same.

	* c-common.c (build_va_arg_1): New function.
	(build_va_arg): Add address operator to va_list operand if necessary.

From-SVN: r223286
2015-05-18 08:19:29 +00:00
Tom de Vries
daf347dddd Fix whitespace in tree-ssa-tail-merge.c
2015-05-18  Tom de Vries  <tom@codesourcery.com>

	* tree-ssa-tail-merge.c: Fix whitespace.

From-SVN: r223285
2015-05-18 08:14:09 +00:00
Tom de Vries
ad7f0dfea3 check_GNU_style.sh: Don't cat empty file
2015-05-18  Tom de Vries  <tom@codesourcery.com>

	* check_GNU_style.sh (g, ag, vg): Don't cat empty file.

From-SVN: r223284
2015-05-18 07:07:44 +00:00