2015-07-16 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/66626
* ira.h (emit-rtl.h): Include.
(non_spilled_static_chain_regno_p): New.
* ira-color.c (setup_profitable_hard_regs): Clear profitable regs
unless it is non spilled static chain pseudo.
(assign_hard_rego): Spill memory profitable allocno unless it is
non spilled static chain pseudo.
(allocno_spill_priority_compare): Put non spilled static chain
pseudo at the end of sorted array.
(improve_allocation): Do nothing if we have static chain and
non-local goto.
(allocno__priority_compare_func): Put non spilled static chain
pseudo at the beginning of sorted array.
(move_spill_restore): Ignore non spilled static chain pseudo.
* ira-costs.c (find_costs_and_classes): Don't assign class NO_REGS
to non spilled static chain pseudo.
* lra-assigns.c (pseudo_compare_func): Put non spilled static chain
pseudo at the beginning of sorted array.
(spill_for): Spill non spilled static chain pseudo last.
* lra-constraints.c (lra_constraints): Remove static chain pseudo
check for equivalence.
2015-07-16 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/66626
* gcc.target/i386/pr66626-2.c: New.
From-SVN: r225891
Fix PR ipa/66896.
* g++.dg/ipa/pr66896.c: New test.
PR ipa/66896.
* ipa-prop.c (update_jump_functions_after_inlining): Create properly
dst_ctx if it does not exist.
From-SVN: r225887
gcc/
* read-md.h (message_with_line, error_with_line): Delete.
* read-md.c (message_with_line, error_with_line): Delete.
* gensupport.h: Include read-md.h.
(md_rtx_info): New structure.
(read_md_rtx): Use it. Return a bool success value.
* gensupport.c (read_md_rtx): Likewise.
* genattr-common.c (gen_attr): Take an md_rtx_info rather than an rtx.
(main): Update after interface changes.
* genattr.c (gen_attr): Take an md_rtx_info rather than an rtx.
(main): Update after interface changes.
* genattrtab.c (insn_code_number): Delete.
(optimize_attrs): Add a max_insn_code parameter and use it instead
of insn_code_number.
(gen_attr): Take an md_rtx_info rather than an rtx and lineno.
Use *_at rather than *_with_line functions.
(gen_insn): Likewise.
(gen_delay): Likewise.
(gen_insn_reserv): Likewise.
(gen_bypass): Take an md_rtx_info rather than an rtx.
(main): Update after interface changes. Use a local max_insn_code
variable instead of insn_code_number.
* genautomata.c (gen_cpu_unit): Take an md_rtx_info rather than
an rtx. Use fatal_at rather than fatal.
(gen_query_cpu_unit, gen_bypass, gen_excl_set)
(gen_presence_absence_set, gen_presence_set, gen_final_presence_set)
(gen_absence_set, gen_final_absence_set, gen_automaton)
(gen_automata_option, gen_reserv, gen_insn_reserv): Likewise.
(main): Update after interface changes.
* gencodes.c (gen_insn): Take an md_rtx_info rather than an rtx
and code number.
(main): Update after interface changes.
* genconditions.c (main): Use new read_md_rtx interface.
* genconfig.c (gen_insn): Take an md_rtx_info rather than an rtx.
(gen_expand, gen_split, gen_peephole, gen_peephole2): Likewise.
(main): Update after interface changes.
* genemit.c (insn_code_number, insn_index_number): Delete.
(gen_insn): Take an md_rtx_info rather than an rtx and lineno.
Use fatal_at rather than fatal.
(gen_expand): Take an md_rtx_info rather than an rtx. Use fatal_at
rather than fatal.
(gen_split): Likewise.
(main): Update after interface changes.
* genextract.c (line_no): Delete.
(gen_insn): Take an md_rtx_info rather than an rtx and lineno.
Update call to walk_rtx.
(VEC_safe_set_locstr): Add an md_rtx_info argument. Use message_at
rather than message_with_line.
(walk_rtx): Add an md_rtx_info argument. Update call to
VEC_safe_set_locstr.
(main): Update after interface changes.
* genflags.c (gen_insn): Take an md_rtx_info rather than an rtx
and lineno. Use error_at rather than separate message_with_line
calls and have_error assignments.
(main): Update after interface changes.
* genmddump.c (main): Use new read_md_rtx interface.
* genopinit.c (insn): Take an md_rtx_info rather than an rtx.
(main): Update after interface changes.
* genoutput.c (next_code_number): Delete.
(gen_insn): Take an md_rtx_info rather than an rtx and lineno.
(gen_peephole, gen_expand, gen_split): Likewise.
(note_constraint): Likewise. Use *_at rather than *_with_line
functions.
(main): Update after interface changes.
* genpeep.c (gen_peephole): Take an md_rtx_info rather than an
rtx and lineno.
(main): Update after interface changes.
* genpreds.c (process_define_predicate): Take an md_rtx_info rather
than an rtx and lineno.
(process_define_constraint): Likewise.
(process_define_register_constraint): Likewise.
(main): Update after interface changes.
* genrecog.c (next_insn_code, pattern_lineno): Delete.
(validate_pattern): Replace top-level rtx with an md_rtx_info.
Use *_at rather than *_with_line functions.
(match_pattern_2): Likewise.
(match_pattern_1, match_pattern): Add an md_rtx_info parameter.
(get_peephole2_pattern): Take an md_rtx_info rather than an rtvec.
Use *_at rather than *_with_line functions.
* gentarget-def.c (add_insn): New function.
(main): Use it. Use new read_md_rtx interface.
From-SVN: r225883
gcc/
* gensupport.h (compute_test_codes): Take a file_location rather
than a line number.
* gensupport.c (compute_test_codes): Likewise. Use *_at functions
rather than *_with_line functions.
(process_define_predicate): Update call to compute_test_codes.
* genpreds.c (validate_exp): Take a file_location rather than a
line number. Use *_at functions rather than *_with_line functions.
(process_define_predicate): Update call to validate_exp.
(constraint_data): Replace lineno field with a file_location.
(add_constraint): Take a file_location rather than a line number.
Use *_at functions rather than *_with_line functions. Fix error
message for address constraints. Update after changes to
validate_exp, constraint_data and compute_test_codes.
(process_define_constraint): Update accordingly.
(process_define_register_constraint): Likewise.
From-SVN: r225882
gcc/
* genoutput.c (data): Use a file_location to record the source
position.
(nothing): Delete.
(idata, idata_end): Remove initialization.
(constraint_data): Replace lineno with a file_location.
(output_insn_data): Update after changes to data.
(gen_insn, gen_peephole, gen_expand, gen_split): Likewise.
(scan_operands): Likewise, using *_at rather than *_with_line
functions.
(process_template): Likewise.
(validate_insn_alternatives): Likewise.
(validate_insn_operands): Likewise.
(validate_optab_operands): Likewise.
(init_insn_for_nothing): Initialize idata and idata_end.
(note_constraint): Update after changes to constraint_data,
using at rather than with_line functions.
(mdep_constraint_len): Take a file_location rather than a
line number. Use at rather than with_line functions.
From-SVN: r225881
gcc/
* read-md.h (fatal_at): Declare.
* read-md.c (fatal_at): New function.
* genattrtab.c (insn_def, attr_desc, delay_desc): Use a file_location
to record the source position.
(check_attr_test): Take a file_location instead of a line number.
Use fatal_at instead of fatal.
(check_attr_value): Update after above changes, using "at"
rather than "with_line" reporting functions.
(convert_set_attr_alternative): Likewise.
(gen_attr): Likewise.
(check_defs): Likewise. Don't assign to read_md_filename.
(gen_insn): Update initialization after above changes.
(gen_delay): Likewise.
(write_insn_cases): Print the filename for a define_peephole.
(gen_insn_reserv): Take a line number as argument and update
the call to check_attr_test.
(main): Pass a line number to gen_insn_reserv.
From-SVN: r225880
gcc/
* read-md.h (file_location): New structure.
(directive_handler_t): Take a file_location rather than a line number.
(message_at, error_at): Declare.
(read_skip_construct): Delete.
* read-md.c (message_with_line_1): Replace with...
(message_at_1): ...this new function.
(message_at, error_at): New functions.
(message_with_line, error_with_line): Update to use message_at_1.
(handle_enum): Take a file_location rather than a line number
and use error_at for error reporting.
(handle_include): Likewise.
(read_skip_construct): Likewise. Make static.
(handle_file): Update after above changes. Pass a file_location
rather than a line number to handle_directive.
* gensupport.c (queue_elem): Replace separate filename and lineno
with a file_location.
(queue_pattern): Replace filename and lineno arguments with a
file_location. Update after change to queue_elem.
(process_define_predicate): Replace lineno argument with a
file_location and use error_at for error reporting. Update
after above changes.
(process_rtx): Likewise.
(subst_pattern_match): Likewise.
(get_alternatives_number): Likewise.
(alter_predicate_for_insn): Likewise.
(rtx_handle_directive): Likewise.
(is_predicable): Update after above changes, using error_at rather
than error_with_line.
(has_subst_attribute): Likewise.
(identify_predicable_attribute): Likewise.
(alter_attrs_for_subst_insn): Likewise.
(process_one_cond_exec): Likewise.
(process_substs_on_one_elem): Likewise.
(process_define_subst): Likewise.
(check_define_attr_duplicates): Likewise.
(read_md_rtx): Update after change to queue_elem.
From-SVN: r225879
2015-07-16 Tom de Vries <tom@codesourcery.com>
* tree-parloops.c (create_parallel_loop): Handle case that exit phi does
not have a corresponding loop header phi.
From-SVN: r225873
2015-07-16 Tom de Vries <tom@codesourcery.com>
* tree-parloops.c (create_loads_for_reductions): Handle case that
reduction is unused.
From-SVN: r225872
2015-07-16 Richard Biener <rguenther@suse.de>
PR tree-optimization/66894
* tree-vrp.c (register_edge_assert_for_2): Fix bad assumption
about deriving NE_EXPR from truncated values.
* gcc.dg/torture/pr66894.c: New testcase.
From-SVN: r225870
2015-07-16 Martin Jambor <mjambor@suse.cz>
* ipa-prop.h (param_aa_status): Rename to ipa_param_aa_status. Adjust
all uses. Fix two typos in its general comment.
(func_body_info): Rename to ipa_func_body_info. Adjust all uses.
From-SVN: r225867
2015-07-16 Richard Biener <rguenther@suse.de>
* tree-ssa-dom.c (dom_valueize): New function.
(record_temporary_equivalences): Also record equivalences
for dominating stmts that have uses of equivalences we are
about to record.
From-SVN: r225860
* tree-ssa-loop-ivopts.c (add_candidate): Remove call to
add_autoinc_candidates.
(add_iv_candidate_for_biv): Rename to add_iv_candidate_for_biv.
(add_iv_candidate_for_biv): Rename from add_iv_candidate_for_biv.
(add_old_ivs_candidates): Rename to add_iv_candidate_for_bivs.
(add_iv_candidate_for_bivs): Rename from add_old_ivs_candidates.
Call new function.
(add_iv_value_candidates): Rename to add_iv_candidate_for_use.
(add_iv_candidate_for_use): Rename from add_iv_value_candidates.
Remove parameter struct iv*. Call add_autoinc_candidates here.
(add_derived_ivs_candidates): Rename to add_iv_candidate_for_uses.
(add_iv_candidate_for_uses): Rename from add_derived_ivs_candidates.
Call new function.
(find_iv_candidates): Call new functions.
From-SVN: r225859
PR target/65249
* config/sh/sh.md (movdi): Split simple reg move to two movsi when
the destination is R0 so as to lower R0-register pressure.
From-SVN: r225856
One of the code refactorings introducing phi node iterators modified
the semantics of this code. Revert that change to what was before.
* graphite-sese-to-poly.c (rewrite_cross_bb_scalar_deps): Point
iterator to use_stmt.
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r225851
In this patch we discard the scops where entry and exit are the same BB.
This is an effort to remove graphite-scop-detection.c:limit_scops.
Removing the limit_scops function introduces correctness regressions.
We are making relevant changes in incremental steps to fix those bugs,
and finally we intend to remove limit_scops.
2015-06-29 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>
* graphite-scop-detection.c (build_scops_1): Discard scops for which entry==exit
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r225850
* graphite-scop-detection.c (stmt_simple_for_scop_p): Bail out in
case of a return statement in scop.
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r225849
* graphite-sese-to-poly.c (parameter_index_in_region): Only handle
INTEGER_TYPE parameters.
(scan_tree_for_params): Handle REAL_CST, COMPLEX_CST, and
VECTOR_CST in scan_tree_for_params.
(add_conditions_to_domain): Only constrain on INTEGER_TYPE.
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r225848
2015-07-14 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/66854
* config/rs6000/rs6000.c (rs6000_pass_by_reference): Move test for
null before IEEE 128-bit floating point support patch.
From-SVN: r225843
[gcc]
2015-07-15 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* simplify-rtx.c (simplify_ternary_operation): Add simplification
for (!c) != {0,...,0} ? a : b for vector modes.
[gcc/testsuite]
2015-07-15 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.target/powerpc/vec-cmp-sel.c: New test.
From-SVN: r225840
2015-07-15 Paolo Bonzini <bonzini@gnu.org>
Martin Jambor <mjambor@suse.cz>
* ipa-inline-analysis.c (unmodified_parm_or_parm_agg_item): Accept
struct func_body_info* instead of struct ipa_node_params*, expecting
fbi->info to be filled in. Replace throughout. Adjust call to
ipa_load_from_parm_agg.
(set_cond_stmt_execution_predicate): Accept struct func_body_info*
instead of struct ipa_node_params*. Adjust calls to other functions
so that they pass either fbi or fbi->info.
(set_switch_stmt_execution_predicate): Likewise.
(will_be_nonconstant_predicate): Likewise.
(compute_bb_predicates): Likewise.
(estimate_function_body_sizes): Move asserts earlier. Fill in
struct func_body_info, replace parms_info with fbi.info. Adjust
calls to functions that now accept struct func_body_info.
* ipa-prop.c (param_aa_status, struct ipa_bb_info): Move to ipa-prop.h.
(struct func_body_info): Likewise.
(ipa_load_from_parm_agg_1): Rename to ipa_load_from_parm_agg,
remove static. Adjust callers.
(ipa_load_from_parm_agg): Remove.
* ipa-prop.h (param_aa_status, ipa_bb_info): Move from ipa-prop.c.
(func_body_info): Likewise.
(ipa_load_from_parm_agg): Adjust prototype.
Co-Authored-By: Martin Jambor <mjambor@suse.cz>
From-SVN: r225838
2015-07-15 Maxim Blumenthal <maxim.blumenthal@intel.com>
libgomp/
* testsuite/libgomp.fortran/examples-4/simd-8.f90: (main): Change type
of EPS parameter from integer to real.
* testsuite/libgomp.fortran/examples-4/task_dep-5.f90: (check): Change
type of EPS parameter from integer to real.
From-SVN: r225827
2015-07-15 Richard Biener <rguenther@suse.de>
* fold-const.c (fold_binary_loc): Move bool_var != 0 -> bool_var
and bool_var == 1 -> bool_var simplifications ...
* match.pd: ... to patterns here. Factor out negate_expr_p
cases from the A - B -> A + (-B) patterns as negate_expr_p
predicate and add a -(A + B) -> (-B) - A pattern.
From-SVN: r225825
gcc/
* config/mips/mips.c (mips_int_mask): New enum.
(mips_shadow_set): Likewise.
(int_mask): New variable.
(use_shadow_register_set_p): Change type to enum mips_shadow_set.
(machine_function): Add int_mask and use_shadow_register_set.
(mips_attribute_table): Add attribute handlers for interrupt and
use_shadow_register_set.
(mips_interrupt_mask): New static function.
(mips_handle_interrupt_attr): Likewise.
(mips_handle_use_shadow_register_set_attr): Likewise.
(mips_use_shadow_register_set): Change return type to enum
mips_shadow_set. Add argument handling for use_shadow_register_set
attribute.
(mips_interrupt_extra_called_saved_reg_p): Update the conditional to
compare with mips_shadow_set enum.
(mips_compute_frame_info): Add interrupt mask and
use_shadow_register_set to per-function information structure.
Add a stack slot for EPC unconditionally.
(mips_expand_prologue): Compare use_shadow_register_set value
with mips_shadow_set enum. Save EPC always in K1, clobber only K1 for
masked interrupt register but in EIC mode use K0 and save Cause in K0.
EPC saved and restored unconditionally. Use PMODE_INSN macro when
copying the stack pointer from the shadow register set.
* config/mips/mips.h (SR_IM0): New define.
* config/mips/mips.md (mips_rdpgpr): Rename to...
(mips_rdpgpr_<mode>): ...this. Use the Pmode iterator.
* doc/extend.texi (Declaring Attributes of Functions): Document
optional arguments for interrupt and use_shadow_register_set
attributes.
gcc/testsuite/
* gcc.target/mips/interrupt_handler-4.c: New test.
Co-Authored-By: Robert Suchanek <robert.suchanek@imgtec.com>
From-SVN: r225819
gcc/
* config/mips/mips.c (mips_compute_frame_info): Allow -mhard-float in
interrupt attribute.
(mips_expand_prologue): Disable the floating point unit in an ISR.
* config/mips/mips.h (SR_COP1): New define.
From-SVN: r225818