matrix-reorg.c (analyze_matrix_allocation_site): Remove unused malloc_fname variable.
* matrix-reorg.c (analyze_matrix_allocation_site): Remove unused malloc_fname variable. (check_allocation_function): Remove unused gsi and bb_level_0 variables. (transform_access_sites): Remove unused d_type_size and d_type_size_k variables. * omega.c (resurrect_subs): Remove unused n variable. (omega_solve_geq): Remove unused neweqns variable. * lto-streamer-in.c (lto_read_tree): Remove unused end_marker variable. * tree-inline.c (declare_return_variable): Remove USE_P argument, return use instead of var. (remap_decl, remap_block): Remove unused fn variable. (expand_call_inline): Remove unused retvar variable, adjust declare_return_variable caller. (optimize_inline_calls): Remove unused prev_fn variable. * tree-vect-slp.c (vect_analyze_slp_instance): Remove unused ncopies variable. (vect_create_mask_and_perm): Remove unused group_size and dr_chain_size variables. * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle MINUS_EXPR properly. * tree-vect-loop.c (vect_analyze_loop_form): Remove unused backedge variable. (vect_create_epilog_for_reduction): Remove unused bytesize variable. * omp-low.c (workshare_safe_to_combine_p): Remove par_entry_bb parameter. Remove unused par_stmt variable. (determine_parallel_type): Adjust workshare_safe_to_combine_p caller. (expand_omp_sections): Remove unused l1 variable. (lower_omp_for): Remove unused ilist variable. * tree-loop-distribution.c (mark_nodes_having_upstream_mem_writes): Remove unused has_upstream_mem_write_p variable. * recog.c (decode_asm_operands): Remove unused noperands variable. * tree-ssa-alias.c (refs_may_alias_p_1): Remove unused size1 and size2 variable. * libgcov.c (__gcov_merge_delta): Remove unused last variable. * tree-call-cdce.c (gen_conditions_for_pow_int_base): Remove unused base_nm variable. (gen_conditions_for_pow): Remove unused ec variable. * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove unused size variable. * ipa-struct-reorg.c (program_redefines_malloc_p): Remove unused fndecl variable. * tree-ssa-sink.c (statement_sink_location): Remove unused code variable. * regmove.c (copy_src_to_dest): Remove unused insn_uid and move_uid variables. * tree-complex.c (create_one_component_var): Remove unused inner_type variable. * calls.c (emit_call_1): Don't GEN_INT (struct_value_size) unnecessarily when GEN_*CALL omits that argument. * regrename.c (regrename_optimize): Remove unused regs_seen variable. (build_def_use): Remove unused icode variable. * ipa-pure-const.c (check_call): Remove unused callee and avail variables. * tree-dfa.c (add_referenced_var): Remove unused v_ann variable. * tree-vect-patterns.c (vect_recog_pow_pattern): Remove unused type variable. (vect_pattern_recog): Remove unused stmt variable. * sel-sched-ir.c (make_regions_from_the_rest): Remove unused new_regions variable. * postreload.c (reload_cse_simplify_operands): Remove unused mode variable. * tree-parloops.c (create_call_for_reduction_1): Remove unused addr_type variable. (create_parallel_loop): Remove unused res variable. (gen_parallel_loop): Remove unused nloop variable. * tree-vect-loop-manip.c (vect_loop_versioning): Likewise. * value-prof.c (gimple_mod_subtract_transform, gimple_stringops_transform): Remove unused value variable. (gimple_stringops_values_to_profile): Remove unused fcode variable. * tree-vrp.c (register_new_assert_for): Remove unused found variable. (vrp_visit_switch_stmt): Remove unused n variable. * tree-vect-stmts.c (vectorizable_conversion): Remove unused expr variable. (vectorizable_operation): Remove unused shift_p variable. (vectorizable_store): Remove unused first_stmt_vinfo variable. * tree-ssa-operands.c (add_stmt_operand): Remove unused v_ann variable. * tree-vect-data-refs.c (vect_analyze_data_refs): Remove unused bb variable. (vect_permute_store_chain): Remove unused scalar_dest variable. (vect_supportable_dr_alignment): Remove unused invariant_in_outerloop variable. * tree-ssa-threadupdate.c (thread_single_edge): Remove unused local_info variable. * tree-optimize.c (tree_rest_of_compilation): Remove unused node variable. * optabs.c (expand_binop): Remove unused equiv_value variable. (emit_libcall_block): Remove unused prev variable. (init_optabs): Remove unused int_mode variable. * tree-ssa-structalias.c (scc_visit): Remove unused have_ref_node variable. (do_structure_copy): Remove unused lhsbase and rhsbase variables. (find_func_aliases): Remove unused rhstype variable. (ipa_pta_execute): Remove unused varid variable. gcc/objc/ * objc-act.c (generate_shared_structures): Remove unused sc_spec and decl_specs variables. (objc_build_message_expr): Remove unused loc variable. (objc_finish_message_expr): Remove unused saved_rtype variable. (encode_field_decl): Remove unused type variable. gcc/lto/ * lto-lang.c (handle_nonnull_attribute): Remove unused attr_arg_num variable. From-SVN: r154726
This commit is contained in:
parent
e86b4c032a
commit
0f900dfafa
41 changed files with 174 additions and 233 deletions
|
@ -1,3 +1,100 @@
|
||||||
|
2009-11-28 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* matrix-reorg.c (analyze_matrix_allocation_site): Remove unused
|
||||||
|
malloc_fname variable.
|
||||||
|
(check_allocation_function): Remove unused gsi and bb_level_0
|
||||||
|
variables.
|
||||||
|
(transform_access_sites): Remove unused d_type_size and d_type_size_k
|
||||||
|
variables.
|
||||||
|
* omega.c (resurrect_subs): Remove unused n variable.
|
||||||
|
(omega_solve_geq): Remove unused neweqns variable.
|
||||||
|
* lto-streamer-in.c (lto_read_tree): Remove unused end_marker variable.
|
||||||
|
* tree-inline.c (declare_return_variable): Remove USE_P argument,
|
||||||
|
return use instead of var.
|
||||||
|
(remap_decl, remap_block): Remove unused fn variable.
|
||||||
|
(expand_call_inline): Remove unused retvar variable, adjust
|
||||||
|
declare_return_variable caller.
|
||||||
|
(optimize_inline_calls): Remove unused prev_fn variable.
|
||||||
|
* tree-vect-slp.c (vect_analyze_slp_instance): Remove unused ncopies
|
||||||
|
variable.
|
||||||
|
(vect_create_mask_and_perm): Remove unused group_size and dr_chain_size
|
||||||
|
variables.
|
||||||
|
* tree-ssa-loop-niter.c (split_to_var_and_offset): Handle MINUS_EXPR
|
||||||
|
properly.
|
||||||
|
* tree-vect-loop.c (vect_analyze_loop_form): Remove unused backedge
|
||||||
|
variable.
|
||||||
|
(vect_create_epilog_for_reduction): Remove unused bytesize variable.
|
||||||
|
* omp-low.c (workshare_safe_to_combine_p): Remove par_entry_bb
|
||||||
|
parameter. Remove unused par_stmt variable.
|
||||||
|
(determine_parallel_type): Adjust workshare_safe_to_combine_p caller.
|
||||||
|
(expand_omp_sections): Remove unused l1 variable.
|
||||||
|
(lower_omp_for): Remove unused ilist variable.
|
||||||
|
* tree-loop-distribution.c (mark_nodes_having_upstream_mem_writes):
|
||||||
|
Remove unused has_upstream_mem_write_p variable.
|
||||||
|
* recog.c (decode_asm_operands): Remove unused noperands variable.
|
||||||
|
* tree-ssa-alias.c (refs_may_alias_p_1): Remove unused size1 and
|
||||||
|
size2 variable.
|
||||||
|
* libgcov.c (__gcov_merge_delta): Remove unused last variable.
|
||||||
|
* tree-call-cdce.c (gen_conditions_for_pow_int_base): Remove unused
|
||||||
|
base_nm variable.
|
||||||
|
(gen_conditions_for_pow): Remove unused ec variable.
|
||||||
|
* tree-ssa-sccvn.c (vn_reference_lookup_3): Remove unused size
|
||||||
|
variable.
|
||||||
|
* ipa-struct-reorg.c (program_redefines_malloc_p): Remove unused
|
||||||
|
fndecl variable.
|
||||||
|
* tree-ssa-sink.c (statement_sink_location): Remove unused code
|
||||||
|
variable.
|
||||||
|
* regmove.c (copy_src_to_dest): Remove unused insn_uid and move_uid
|
||||||
|
variables.
|
||||||
|
* tree-complex.c (create_one_component_var): Remove unused inner_type
|
||||||
|
variable.
|
||||||
|
* calls.c (emit_call_1): Don't GEN_INT (struct_value_size)
|
||||||
|
unnecessarily when GEN_*CALL omits that argument.
|
||||||
|
* regrename.c (regrename_optimize): Remove unused regs_seen variable.
|
||||||
|
(build_def_use): Remove unused icode variable.
|
||||||
|
* ipa-pure-const.c (check_call): Remove unused callee and avail
|
||||||
|
variables.
|
||||||
|
* tree-dfa.c (add_referenced_var): Remove unused v_ann variable.
|
||||||
|
* tree-vect-patterns.c (vect_recog_pow_pattern): Remove unused type
|
||||||
|
variable.
|
||||||
|
(vect_pattern_recog): Remove unused stmt variable.
|
||||||
|
* sel-sched-ir.c (make_regions_from_the_rest): Remove unused
|
||||||
|
new_regions variable.
|
||||||
|
* postreload.c (reload_cse_simplify_operands): Remove unused mode
|
||||||
|
variable.
|
||||||
|
* tree-parloops.c (create_call_for_reduction_1): Remove unused
|
||||||
|
addr_type variable.
|
||||||
|
(create_parallel_loop): Remove unused res variable.
|
||||||
|
(gen_parallel_loop): Remove unused nloop variable.
|
||||||
|
* tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
|
||||||
|
* value-prof.c (gimple_mod_subtract_transform,
|
||||||
|
gimple_stringops_transform): Remove unused value variable.
|
||||||
|
(gimple_stringops_values_to_profile): Remove unused fcode variable.
|
||||||
|
* tree-vrp.c (register_new_assert_for): Remove unused found variable.
|
||||||
|
(vrp_visit_switch_stmt): Remove unused n variable.
|
||||||
|
* tree-vect-stmts.c (vectorizable_conversion): Remove unused expr
|
||||||
|
variable.
|
||||||
|
(vectorizable_operation): Remove unused shift_p variable.
|
||||||
|
(vectorizable_store): Remove unused first_stmt_vinfo variable.
|
||||||
|
* tree-ssa-operands.c (add_stmt_operand): Remove unused v_ann variable.
|
||||||
|
* tree-vect-data-refs.c (vect_analyze_data_refs): Remove unused bb
|
||||||
|
variable.
|
||||||
|
(vect_permute_store_chain): Remove unused scalar_dest variable.
|
||||||
|
(vect_supportable_dr_alignment): Remove unused invariant_in_outerloop
|
||||||
|
variable.
|
||||||
|
* tree-ssa-threadupdate.c (thread_single_edge): Remove unused
|
||||||
|
local_info variable.
|
||||||
|
* tree-optimize.c (tree_rest_of_compilation): Remove unused node
|
||||||
|
variable.
|
||||||
|
* optabs.c (expand_binop): Remove unused equiv_value variable.
|
||||||
|
(emit_libcall_block): Remove unused prev variable.
|
||||||
|
(init_optabs): Remove unused int_mode variable.
|
||||||
|
* tree-ssa-structalias.c (scc_visit): Remove unused have_ref_node
|
||||||
|
variable.
|
||||||
|
(do_structure_copy): Remove unused lhsbase and rhsbase variables.
|
||||||
|
(find_func_aliases): Remove unused rhstype variable.
|
||||||
|
(ipa_pta_execute): Remove unused varid variable.
|
||||||
|
|
||||||
2009-11-28 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>
|
2009-11-28 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>
|
||||||
|
|
||||||
* config/avr/avr.h (ASM_OUTPUT_EXTERNAL): Add.
|
* config/avr/avr.h (ASM_OUTPUT_EXTERNAL): Add.
|
||||||
|
|
|
@ -256,10 +256,6 @@ emit_call_1 (rtx funexp, tree fntree ATTRIBUTE_UNUSED, tree fndecl ATTRIBUTE_UNU
|
||||||
rtx call_insn;
|
rtx call_insn;
|
||||||
int already_popped = 0;
|
int already_popped = 0;
|
||||||
HOST_WIDE_INT n_popped = RETURN_POPS_ARGS (fndecl, funtype, stack_size);
|
HOST_WIDE_INT n_popped = RETURN_POPS_ARGS (fndecl, funtype, stack_size);
|
||||||
#if defined (HAVE_call) && defined (HAVE_call_value)
|
|
||||||
rtx struct_value_size_rtx;
|
|
||||||
struct_value_size_rtx = GEN_INT (struct_value_size);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CALL_POPS_ARGS
|
#ifdef CALL_POPS_ARGS
|
||||||
n_popped += CALL_POPS_ARGS (* args_so_far);
|
n_popped += CALL_POPS_ARGS (* args_so_far);
|
||||||
|
@ -341,7 +337,7 @@ emit_call_1 (rtx funexp, tree fntree ATTRIBUTE_UNUSED, tree fndecl ATTRIBUTE_UNU
|
||||||
else
|
else
|
||||||
emit_call_insn (GEN_SIBCALL (gen_rtx_MEM (FUNCTION_MODE, funexp),
|
emit_call_insn (GEN_SIBCALL (gen_rtx_MEM (FUNCTION_MODE, funexp),
|
||||||
rounded_stack_size_rtx, next_arg_reg,
|
rounded_stack_size_rtx, next_arg_reg,
|
||||||
struct_value_size_rtx));
|
GEN_INT (struct_value_size)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
@ -357,7 +353,7 @@ emit_call_1 (rtx funexp, tree fntree ATTRIBUTE_UNUSED, tree fndecl ATTRIBUTE_UNU
|
||||||
else
|
else
|
||||||
emit_call_insn (GEN_CALL (gen_rtx_MEM (FUNCTION_MODE, funexp),
|
emit_call_insn (GEN_CALL (gen_rtx_MEM (FUNCTION_MODE, funexp),
|
||||||
rounded_stack_size_rtx, next_arg_reg,
|
rounded_stack_size_rtx, next_arg_reg,
|
||||||
struct_value_size_rtx));
|
GEN_INT (struct_value_size)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -259,8 +259,6 @@ check_call (funct_state local, gimple call, bool ipa)
|
||||||
{
|
{
|
||||||
int flags = gimple_call_flags (call);
|
int flags = gimple_call_flags (call);
|
||||||
tree callee_t = gimple_call_fndecl (call);
|
tree callee_t = gimple_call_fndecl (call);
|
||||||
struct cgraph_node* callee;
|
|
||||||
enum availability avail = AVAIL_NOT_AVAILABLE;
|
|
||||||
bool possibly_throws = stmt_could_throw_p (call);
|
bool possibly_throws = stmt_could_throw_p (call);
|
||||||
bool possibly_throws_externally = (possibly_throws
|
bool possibly_throws_externally = (possibly_throws
|
||||||
&& stmt_can_throw_external (call));
|
&& stmt_can_throw_external (call));
|
||||||
|
@ -299,9 +297,6 @@ check_call (funct_state local, gimple call, bool ipa)
|
||||||
graph. */
|
graph. */
|
||||||
if (callee_t)
|
if (callee_t)
|
||||||
{
|
{
|
||||||
callee = cgraph_node(callee_t);
|
|
||||||
avail = cgraph_function_body_availability (callee);
|
|
||||||
|
|
||||||
/* When bad things happen to bad functions, they cannot be const
|
/* When bad things happen to bad functions, they cannot be const
|
||||||
or pure. */
|
or pure. */
|
||||||
if (setjmp_call_p (callee_t))
|
if (setjmp_call_p (callee_t))
|
||||||
|
|
|
@ -3435,13 +3435,10 @@ program_redefines_malloc_p (void)
|
||||||
struct cgraph_node *c_node;
|
struct cgraph_node *c_node;
|
||||||
struct cgraph_node *c_node2;
|
struct cgraph_node *c_node2;
|
||||||
struct cgraph_edge *c_edge;
|
struct cgraph_edge *c_edge;
|
||||||
tree fndecl;
|
|
||||||
tree fndecl2;
|
tree fndecl2;
|
||||||
|
|
||||||
for (c_node = cgraph_nodes; c_node; c_node = c_node->next)
|
for (c_node = cgraph_nodes; c_node; c_node = c_node->next)
|
||||||
{
|
{
|
||||||
fndecl = c_node->decl;
|
|
||||||
|
|
||||||
for (c_edge = c_node->callees; c_edge; c_edge = c_edge->next_callee)
|
for (c_edge = c_node->callees; c_edge; c_edge = c_edge->next_callee)
|
||||||
{
|
{
|
||||||
c_node2 = c_edge->callee;
|
c_node2 = c_edge->callee;
|
||||||
|
|
|
@ -675,13 +675,13 @@ void
|
||||||
__gcov_merge_delta (gcov_type *counters, unsigned n_counters)
|
__gcov_merge_delta (gcov_type *counters, unsigned n_counters)
|
||||||
{
|
{
|
||||||
unsigned i, n_measures;
|
unsigned i, n_measures;
|
||||||
gcov_type last, value, counter, all;
|
gcov_type value, counter, all;
|
||||||
|
|
||||||
gcc_assert (!(n_counters % 4));
|
gcc_assert (!(n_counters % 4));
|
||||||
n_measures = n_counters / 4;
|
n_measures = n_counters / 4;
|
||||||
for (i = 0; i < n_measures; i++, counters += 4)
|
for (i = 0; i < n_measures; i++, counters += 4)
|
||||||
{
|
{
|
||||||
last = gcov_read_counter ();
|
/* last = */ gcov_read_counter ();
|
||||||
value = gcov_read_counter ();
|
value = gcov_read_counter ();
|
||||||
counter = gcov_read_counter ();
|
counter = gcov_read_counter ();
|
||||||
all = gcov_read_counter ();
|
all = gcov_read_counter ();
|
||||||
|
|
|
@ -2597,7 +2597,6 @@ lto_read_tree (struct lto_input_block *ib, struct data_in *data_in,
|
||||||
enum LTO_tags tag)
|
enum LTO_tags tag)
|
||||||
{
|
{
|
||||||
tree result;
|
tree result;
|
||||||
char end_marker;
|
|
||||||
int ix;
|
int ix;
|
||||||
|
|
||||||
result = lto_materialize_tree (ib, data_in, tag, &ix);
|
result = lto_materialize_tree (ib, data_in, tag, &ix);
|
||||||
|
@ -2614,7 +2613,7 @@ lto_read_tree (struct lto_input_block *ib, struct data_in *data_in,
|
||||||
else if (TREE_CODE (result) == FUNCTION_DECL && !DECL_BUILT_IN (result))
|
else if (TREE_CODE (result) == FUNCTION_DECL && !DECL_BUILT_IN (result))
|
||||||
lto_register_function_decl_in_symtab (data_in, result);
|
lto_register_function_decl_in_symtab (data_in, result);
|
||||||
|
|
||||||
end_marker = lto_input_1_unsigned (ib);
|
/* end_marker = */ lto_input_1_unsigned (ib);
|
||||||
|
|
||||||
#ifdef LTO_STREAMER_DEBUG
|
#ifdef LTO_STREAMER_DEBUG
|
||||||
/* Remove the mapping to RESULT's original address set by
|
/* Remove the mapping to RESULT's original address set by
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2009-11-28 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* lto-lang.c (handle_nonnull_attribute): Remove unused attr_arg_num
|
||||||
|
variable.
|
||||||
|
|
||||||
2009-11-19 Rafael Avila de Espindola <espindola@google.com>
|
2009-11-19 Rafael Avila de Espindola <espindola@google.com>
|
||||||
|
|
||||||
PR bootstrap/42096
|
PR bootstrap/42096
|
||||||
|
|
|
@ -285,7 +285,6 @@ handle_nonnull_attribute (tree *node, tree ARG_UNUSED (name),
|
||||||
bool * ARG_UNUSED (no_add_attrs))
|
bool * ARG_UNUSED (no_add_attrs))
|
||||||
{
|
{
|
||||||
tree type = *node;
|
tree type = *node;
|
||||||
unsigned HOST_WIDE_INT attr_arg_num;
|
|
||||||
|
|
||||||
/* If no arguments are specified, all pointer arguments should be
|
/* If no arguments are specified, all pointer arguments should be
|
||||||
non-null. Verify a full prototype is given so that the arguments
|
non-null. Verify a full prototype is given so that the arguments
|
||||||
|
@ -298,7 +297,7 @@ handle_nonnull_attribute (tree *node, tree ARG_UNUSED (name),
|
||||||
|
|
||||||
/* Argument list specified. Verify that each argument number references
|
/* Argument list specified. Verify that each argument number references
|
||||||
a pointer argument. */
|
a pointer argument. */
|
||||||
for (attr_arg_num = 1; args; args = TREE_CHAIN (args))
|
for (; args; args = TREE_CHAIN (args))
|
||||||
{
|
{
|
||||||
tree argument;
|
tree argument;
|
||||||
unsigned HOST_WIDE_INT arg_num = 0, ck_num;
|
unsigned HOST_WIDE_INT arg_num = 0, ck_num;
|
||||||
|
|
|
@ -821,7 +821,6 @@ analyze_matrix_allocation_site (struct matrix_info *mi, gimple stmt,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tree malloc_fn_decl;
|
tree malloc_fn_decl;
|
||||||
const char *malloc_fname;
|
|
||||||
|
|
||||||
malloc_fn_decl = gimple_call_fndecl (stmt);
|
malloc_fn_decl = gimple_call_fndecl (stmt);
|
||||||
if (malloc_fn_decl == NULL_TREE)
|
if (malloc_fn_decl == NULL_TREE)
|
||||||
|
@ -829,7 +828,6 @@ analyze_matrix_allocation_site (struct matrix_info *mi, gimple stmt,
|
||||||
mark_min_matrix_escape_level (mi, level, stmt);
|
mark_min_matrix_escape_level (mi, level, stmt);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
malloc_fname = IDENTIFIER_POINTER (DECL_NAME (malloc_fn_decl));
|
|
||||||
if (DECL_FUNCTION_CODE (malloc_fn_decl) != BUILT_IN_MALLOC)
|
if (DECL_FUNCTION_CODE (malloc_fn_decl) != BUILT_IN_MALLOC)
|
||||||
{
|
{
|
||||||
if (dump_file)
|
if (dump_file)
|
||||||
|
@ -1572,8 +1570,6 @@ static int
|
||||||
check_allocation_function (void **slot, void *data ATTRIBUTE_UNUSED)
|
check_allocation_function (void **slot, void *data ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
int level;
|
int level;
|
||||||
gimple_stmt_iterator gsi;
|
|
||||||
basic_block bb_level_0;
|
|
||||||
struct matrix_info *mi = (struct matrix_info *) *slot;
|
struct matrix_info *mi = (struct matrix_info *) *slot;
|
||||||
sbitmap visited;
|
sbitmap visited;
|
||||||
|
|
||||||
|
@ -1595,9 +1591,6 @@ check_allocation_function (void **slot, void *data ATTRIBUTE_UNUSED)
|
||||||
|
|
||||||
mark_min_matrix_escape_level (mi, level, NULL);
|
mark_min_matrix_escape_level (mi, level, NULL);
|
||||||
|
|
||||||
gsi = gsi_for_stmt (mi->malloc_for_level[0]);
|
|
||||||
bb_level_0 = gsi.bb;
|
|
||||||
|
|
||||||
/* Check if the expression of the size passed to malloc could be
|
/* Check if the expression of the size passed to malloc could be
|
||||||
pre-calculated before the malloc of level 0. */
|
pre-calculated before the malloc of level 0. */
|
||||||
for (level = 1; level < mi->min_indirect_level_escape; level++)
|
for (level = 1; level < mi->min_indirect_level_escape; level++)
|
||||||
|
@ -1918,10 +1911,6 @@ transform_access_sites (void **slot, void *data ATTRIBUTE_UNUSED)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tree new_offset;
|
tree new_offset;
|
||||||
tree d_type_size, d_type_size_k;
|
|
||||||
|
|
||||||
d_type_size = size_int (mi->dimension_type_size[min_escape_l]);
|
|
||||||
d_type_size_k = size_int (mi->dimension_type_size[k + 1]);
|
|
||||||
|
|
||||||
new_offset =
|
new_offset =
|
||||||
compute_offset (mi->dimension_type_size[min_escape_l],
|
compute_offset (mi->dimension_type_size[min_escape_l],
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
2009-11-28 Jakub Jelinek <jakub@redhat.com>
|
2009-11-28 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* objc-act.c (generate_shared_structures): Remove unused sc_spec and
|
||||||
|
decl_specs variables.
|
||||||
|
(objc_build_message_expr): Remove unused loc variable.
|
||||||
|
(objc_finish_message_expr): Remove unused saved_rtype variable.
|
||||||
|
(encode_field_decl): Remove unused type variable.
|
||||||
|
|
||||||
PR obj-c++/42156
|
PR obj-c++/42156
|
||||||
* objc-act.c (objc_build_struct): INIT_TYPE_OBJC_INFO for
|
* objc-act.c (objc_build_struct): INIT_TYPE_OBJC_INFO for
|
||||||
type variants that don't have it initialized yet.
|
type variants that don't have it initialized yet.
|
||||||
|
|
|
@ -5787,7 +5787,7 @@ generate_category (tree cat)
|
||||||
static void
|
static void
|
||||||
generate_shared_structures (int cls_flags)
|
generate_shared_structures (int cls_flags)
|
||||||
{
|
{
|
||||||
tree sc_spec, decl_specs, decl;
|
tree decl;
|
||||||
tree name_expr, super_expr, root_expr;
|
tree name_expr, super_expr, root_expr;
|
||||||
tree my_root_id = NULL_TREE, my_super_id = NULL_TREE;
|
tree my_root_id = NULL_TREE, my_super_id = NULL_TREE;
|
||||||
tree cast_type, initlist, protocol_decl;
|
tree cast_type, initlist, protocol_decl;
|
||||||
|
@ -5844,9 +5844,6 @@ generate_shared_structures (int cls_flags)
|
||||||
|
|
||||||
/* static struct objc_class _OBJC_METACLASS_Foo = { ... }; */
|
/* static struct objc_class _OBJC_METACLASS_Foo = { ... }; */
|
||||||
|
|
||||||
sc_spec = build_tree_list (NULL_TREE, ridpointers[(int) RID_STATIC]);
|
|
||||||
decl_specs = tree_cons (NULL_TREE, objc_class_template, sc_spec);
|
|
||||||
|
|
||||||
decl = start_var_decl (objc_class_template,
|
decl = start_var_decl (objc_class_template,
|
||||||
IDENTIFIER_POINTER
|
IDENTIFIER_POINTER
|
||||||
(DECL_NAME (UOBJC_METACLASS_decl)));
|
(DECL_NAME (UOBJC_METACLASS_decl)));
|
||||||
|
@ -6269,7 +6266,6 @@ tree
|
||||||
objc_build_message_expr (tree mess)
|
objc_build_message_expr (tree mess)
|
||||||
{
|
{
|
||||||
tree receiver = TREE_PURPOSE (mess);
|
tree receiver = TREE_PURPOSE (mess);
|
||||||
location_t loc;
|
|
||||||
tree sel_name;
|
tree sel_name;
|
||||||
#ifdef OBJCPLUS
|
#ifdef OBJCPLUS
|
||||||
tree args = TREE_PURPOSE (TREE_VALUE (mess));
|
tree args = TREE_PURPOSE (TREE_VALUE (mess));
|
||||||
|
@ -6281,11 +6277,6 @@ objc_build_message_expr (tree mess)
|
||||||
if (TREE_CODE (receiver) == ERROR_MARK || TREE_CODE (args) == ERROR_MARK)
|
if (TREE_CODE (receiver) == ERROR_MARK || TREE_CODE (args) == ERROR_MARK)
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
|
|
||||||
if (CAN_HAVE_LOCATION_P (receiver))
|
|
||||||
loc = EXPR_LOCATION (receiver);
|
|
||||||
else
|
|
||||||
loc = input_location;
|
|
||||||
|
|
||||||
/* Obtain the full selector name. */
|
/* Obtain the full selector name. */
|
||||||
if (TREE_CODE (args) == IDENTIFIER_NODE)
|
if (TREE_CODE (args) == IDENTIFIER_NODE)
|
||||||
/* A unary selector. */
|
/* A unary selector. */
|
||||||
|
@ -6448,7 +6439,7 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params)
|
||||||
}
|
}
|
||||||
else if (rtype)
|
else if (rtype)
|
||||||
{
|
{
|
||||||
tree orig_rtype = rtype, saved_rtype;
|
tree orig_rtype = rtype;
|
||||||
|
|
||||||
if (TREE_CODE (rtype) == POINTER_TYPE)
|
if (TREE_CODE (rtype) == POINTER_TYPE)
|
||||||
rtype = TREE_TYPE (rtype);
|
rtype = TREE_TYPE (rtype);
|
||||||
|
@ -6457,7 +6448,6 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params)
|
||||||
&& TREE_CODE (OBJC_TYPE_NAME (rtype)) == TYPE_DECL
|
&& TREE_CODE (OBJC_TYPE_NAME (rtype)) == TYPE_DECL
|
||||||
&& DECL_ORIGINAL_TYPE (OBJC_TYPE_NAME (rtype)))
|
&& DECL_ORIGINAL_TYPE (OBJC_TYPE_NAME (rtype)))
|
||||||
rtype = DECL_ORIGINAL_TYPE (OBJC_TYPE_NAME (rtype));
|
rtype = DECL_ORIGINAL_TYPE (OBJC_TYPE_NAME (rtype));
|
||||||
saved_rtype = rtype;
|
|
||||||
if (TYPED_OBJECT (rtype))
|
if (TYPED_OBJECT (rtype))
|
||||||
{
|
{
|
||||||
rprotos = TYPE_OBJC_PROTOCOL_LIST (rtype);
|
rprotos = TYPE_OBJC_PROTOCOL_LIST (rtype);
|
||||||
|
@ -8311,8 +8301,6 @@ encode_gnu_bitfield (int position, tree type, int size)
|
||||||
static void
|
static void
|
||||||
encode_field_decl (tree field_decl, int curtype, int format)
|
encode_field_decl (tree field_decl, int curtype, int format)
|
||||||
{
|
{
|
||||||
tree type;
|
|
||||||
|
|
||||||
#ifdef OBJCPLUS
|
#ifdef OBJCPLUS
|
||||||
/* C++ static members, and things that are not fields at all,
|
/* C++ static members, and things that are not fields at all,
|
||||||
should not appear in the encoding. */
|
should not appear in the encoding. */
|
||||||
|
@ -8320,8 +8308,6 @@ encode_field_decl (tree field_decl, int curtype, int format)
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
type = TREE_TYPE (field_decl);
|
|
||||||
|
|
||||||
/* Generate the bitfield typing information, if needed. Note the difference
|
/* Generate the bitfield typing information, if needed. Note the difference
|
||||||
between GNU and NeXT runtimes. */
|
between GNU and NeXT runtimes. */
|
||||||
if (DECL_BIT_FIELD_TYPE (field_decl))
|
if (DECL_BIT_FIELD_TYPE (field_decl))
|
||||||
|
|
|
@ -1978,7 +1978,7 @@ resurrect_subs (omega_pb pb)
|
||||||
if (pb->num_subs > 0
|
if (pb->num_subs > 0
|
||||||
&& please_no_equalities_in_simplified_problems == 0)
|
&& please_no_equalities_in_simplified_problems == 0)
|
||||||
{
|
{
|
||||||
int i, e, n, m;
|
int i, e, m;
|
||||||
|
|
||||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||||
{
|
{
|
||||||
|
@ -1992,7 +1992,6 @@ resurrect_subs (omega_pb pb)
|
||||||
omega_unprotect_1 (pb, &i, NULL);
|
omega_unprotect_1 (pb, &i, NULL);
|
||||||
|
|
||||||
m = pb->num_subs;
|
m = pb->num_subs;
|
||||||
n = MAX (pb->num_vars, pb->safe_vars + m);
|
|
||||||
|
|
||||||
for (e = pb->num_geqs - 1; e >= 0; e--)
|
for (e = pb->num_geqs - 1; e >= 0; e--)
|
||||||
if (single_var_geq (&pb->geqs[e], pb->num_vars))
|
if (single_var_geq (&pb->geqs[e], pb->num_vars))
|
||||||
|
@ -3723,7 +3722,6 @@ omega_solve_geq (omega_pb pb, enum omega_result desired_res)
|
||||||
int max_splinters = 1;
|
int max_splinters = 1;
|
||||||
bool exact = false;
|
bool exact = false;
|
||||||
bool lucky_exact = false;
|
bool lucky_exact = false;
|
||||||
int neweqns = 0;
|
|
||||||
int best = (INT_MAX);
|
int best = (INT_MAX);
|
||||||
int j = 0, jLe = 0, jLowerBoundCount = 0;
|
int j = 0, jLe = 0, jLowerBoundCount = 0;
|
||||||
|
|
||||||
|
@ -3862,7 +3860,7 @@ omega_solve_geq (omega_pb pb, enum omega_result desired_res)
|
||||||
|| lucky
|
|| lucky
|
||||||
|| in_approximate_mode)
|
|| in_approximate_mode)
|
||||||
{
|
{
|
||||||
neweqns = score = upper_bound_count * lower_bound_count;
|
score = upper_bound_count * lower_bound_count;
|
||||||
|
|
||||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||||
fprintf (dump_file,
|
fprintf (dump_file,
|
||||||
|
@ -3898,7 +3896,6 @@ omega_solve_geq (omega_pb pb, enum omega_result desired_res)
|
||||||
upper_bound_count,
|
upper_bound_count,
|
||||||
lower_bound_count, minC, maxC);
|
lower_bound_count, minC, maxC);
|
||||||
|
|
||||||
neweqns = upper_bound_count * lower_bound_count;
|
|
||||||
score = maxC - minC;
|
score = maxC - minC;
|
||||||
|
|
||||||
if (best > score)
|
if (best > score)
|
||||||
|
|
|
@ -518,13 +518,10 @@ extract_omp_for_data (gimple for_stmt, struct omp_for_data *fd,
|
||||||
hack something up here, it is really not worth the aggravation. */
|
hack something up here, it is really not worth the aggravation. */
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
workshare_safe_to_combine_p (basic_block par_entry_bb, basic_block ws_entry_bb)
|
workshare_safe_to_combine_p (basic_block ws_entry_bb)
|
||||||
{
|
{
|
||||||
struct omp_for_data fd;
|
struct omp_for_data fd;
|
||||||
gimple par_stmt, ws_stmt;
|
gimple ws_stmt = last_stmt (ws_entry_bb);
|
||||||
|
|
||||||
par_stmt = last_stmt (par_entry_bb);
|
|
||||||
ws_stmt = last_stmt (ws_entry_bb);
|
|
||||||
|
|
||||||
if (gimple_code (ws_stmt) == GIMPLE_OMP_SECTIONS)
|
if (gimple_code (ws_stmt) == GIMPLE_OMP_SECTIONS)
|
||||||
return true;
|
return true;
|
||||||
|
@ -631,7 +628,7 @@ determine_parallel_type (struct omp_region *region)
|
||||||
|
|
||||||
if (single_succ (par_entry_bb) == ws_entry_bb
|
if (single_succ (par_entry_bb) == ws_entry_bb
|
||||||
&& single_succ (ws_exit_bb) == par_exit_bb
|
&& single_succ (ws_exit_bb) == par_exit_bb
|
||||||
&& workshare_safe_to_combine_p (par_entry_bb, ws_entry_bb)
|
&& workshare_safe_to_combine_p (ws_entry_bb)
|
||||||
&& (gimple_omp_parallel_combined_p (last_stmt (par_entry_bb))
|
&& (gimple_omp_parallel_combined_p (last_stmt (par_entry_bb))
|
||||||
|| (last_and_only_stmt (ws_entry_bb)
|
|| (last_and_only_stmt (ws_entry_bb)
|
||||||
&& last_and_only_stmt (par_exit_bb))))
|
&& last_and_only_stmt (par_exit_bb))))
|
||||||
|
@ -4647,7 +4644,7 @@ expand_omp_for (struct omp_region *region)
|
||||||
static void
|
static void
|
||||||
expand_omp_sections (struct omp_region *region)
|
expand_omp_sections (struct omp_region *region)
|
||||||
{
|
{
|
||||||
tree t, u, vin = NULL, vmain, vnext, l1, l2;
|
tree t, u, vin = NULL, vmain, vnext, l2;
|
||||||
VEC (tree,heap) *label_vec;
|
VEC (tree,heap) *label_vec;
|
||||||
unsigned len;
|
unsigned len;
|
||||||
basic_block entry_bb, l0_bb, l1_bb, l2_bb, default_bb;
|
basic_block entry_bb, l0_bb, l1_bb, l2_bb, default_bb;
|
||||||
|
@ -4692,12 +4689,10 @@ expand_omp_sections (struct omp_region *region)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default_bb = create_empty_bb (l1_bb->prev_bb);
|
default_bb = create_empty_bb (l1_bb->prev_bb);
|
||||||
l1 = gimple_block_label (l1_bb);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
default_bb = create_empty_bb (l0_bb);
|
default_bb = create_empty_bb (l0_bb);
|
||||||
l1 = NULL_TREE;
|
|
||||||
l2 = gimple_block_label (default_bb);
|
l2 = gimple_block_label (default_bb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6023,7 +6018,7 @@ lower_omp_for (gimple_stmt_iterator *gsi_p, omp_context *ctx)
|
||||||
tree *rhs_p, block;
|
tree *rhs_p, block;
|
||||||
struct omp_for_data fd;
|
struct omp_for_data fd;
|
||||||
gimple stmt = gsi_stmt (*gsi_p), new_stmt;
|
gimple stmt = gsi_stmt (*gsi_p), new_stmt;
|
||||||
gimple_seq omp_for_body, body, dlist, ilist;
|
gimple_seq omp_for_body, body, dlist;
|
||||||
size_t i;
|
size_t i;
|
||||||
struct gimplify_ctx gctx;
|
struct gimplify_ctx gctx;
|
||||||
|
|
||||||
|
@ -6046,7 +6041,6 @@ lower_omp_for (gimple_stmt_iterator *gsi_p, omp_context *ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The pre-body and input clauses go before the lowered GIMPLE_OMP_FOR. */
|
/* The pre-body and input clauses go before the lowered GIMPLE_OMP_FOR. */
|
||||||
ilist = NULL;
|
|
||||||
dlist = NULL;
|
dlist = NULL;
|
||||||
body = NULL;
|
body = NULL;
|
||||||
lower_rec_input_clauses (gimple_omp_for_clauses (stmt), &body, &dlist, ctx);
|
lower_rec_input_clauses (gimple_omp_for_clauses (stmt), &body, &dlist, ctx);
|
||||||
|
|
21
gcc/optabs.c
21
gcc/optabs.c
|
@ -1719,7 +1719,6 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1,
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
rtx insns;
|
rtx insns;
|
||||||
rtx equiv_value;
|
|
||||||
|
|
||||||
/* If TARGET is the same as one of the operands, the REG_EQUAL note
|
/* If TARGET is the same as one of the operands, the REG_EQUAL note
|
||||||
won't be accurate, so use a new target. */
|
won't be accurate, so use a new target. */
|
||||||
|
@ -1749,13 +1748,6 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1,
|
||||||
|
|
||||||
if (i == GET_MODE_BITSIZE (mode) / BITS_PER_WORD)
|
if (i == GET_MODE_BITSIZE (mode) / BITS_PER_WORD)
|
||||||
{
|
{
|
||||||
if (binoptab->code != UNKNOWN)
|
|
||||||
equiv_value
|
|
||||||
= gen_rtx_fmt_ee (binoptab->code, mode,
|
|
||||||
copy_rtx (op0), copy_rtx (op1));
|
|
||||||
else
|
|
||||||
equiv_value = 0;
|
|
||||||
|
|
||||||
emit_insn (insns);
|
emit_insn (insns);
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
@ -3903,7 +3895,7 @@ void
|
||||||
emit_libcall_block (rtx insns, rtx target, rtx result, rtx equiv)
|
emit_libcall_block (rtx insns, rtx target, rtx result, rtx equiv)
|
||||||
{
|
{
|
||||||
rtx final_dest = target;
|
rtx final_dest = target;
|
||||||
rtx prev, next, last, insn;
|
rtx next, last, insn;
|
||||||
|
|
||||||
/* If this is a reg with REG_USERVAR_P set, then it could possibly turn
|
/* If this is a reg with REG_USERVAR_P set, then it could possibly turn
|
||||||
into a MEM later. Protect the libcall block from this change. */
|
into a MEM later. Protect the libcall block from this change. */
|
||||||
|
@ -3980,10 +3972,7 @@ emit_libcall_block (rtx insns, rtx target, rtx result, rtx equiv)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
prev = get_last_insn ();
|
|
||||||
|
|
||||||
/* Write the remaining insns followed by the final copy. */
|
/* Write the remaining insns followed by the final copy. */
|
||||||
|
|
||||||
for (insn = insns; insn; insn = next)
|
for (insn = insns; insn; insn = next)
|
||||||
{
|
{
|
||||||
next = NEXT_INSN (insn);
|
next = NEXT_INSN (insn);
|
||||||
|
@ -6201,7 +6190,6 @@ void
|
||||||
init_optabs (void)
|
init_optabs (void)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
enum machine_mode int_mode;
|
|
||||||
static bool reinit;
|
static bool reinit;
|
||||||
|
|
||||||
libfunc_hash = htab_create_ggc (10, hash_libfunc, eq_libfunc, NULL);
|
libfunc_hash = htab_create_ggc (10, hash_libfunc, eq_libfunc, NULL);
|
||||||
|
@ -6657,11 +6645,8 @@ init_optabs (void)
|
||||||
/* The ffs function operates on `int'. Fall back on it if we do not
|
/* The ffs function operates on `int'. Fall back on it if we do not
|
||||||
have a libgcc2 function for that width. */
|
have a libgcc2 function for that width. */
|
||||||
if (INT_TYPE_SIZE < BITS_PER_WORD)
|
if (INT_TYPE_SIZE < BITS_PER_WORD)
|
||||||
{
|
set_optab_libfunc (ffs_optab, mode_for_size (INT_TYPE_SIZE, MODE_INT, 0),
|
||||||
int_mode = mode_for_size (INT_TYPE_SIZE, MODE_INT, 0);
|
"ffs");
|
||||||
set_optab_libfunc (ffs_optab, mode_for_size (INT_TYPE_SIZE, MODE_INT, 0),
|
|
||||||
"ffs");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Explicitly initialize the bswap libfuncs since we need them to be
|
/* Explicitly initialize the bswap libfuncs since we need them to be
|
||||||
valid for things other than word_mode. */
|
valid for things other than word_mode. */
|
||||||
|
|
|
@ -407,7 +407,6 @@ reload_cse_simplify_operands (rtx insn, rtx testreg)
|
||||||
cselib_val *v;
|
cselib_val *v;
|
||||||
struct elt_loc_list *l;
|
struct elt_loc_list *l;
|
||||||
rtx op;
|
rtx op;
|
||||||
enum machine_mode mode;
|
|
||||||
|
|
||||||
CLEAR_HARD_REG_SET (equiv_regs[i]);
|
CLEAR_HARD_REG_SET (equiv_regs[i]);
|
||||||
|
|
||||||
|
@ -420,11 +419,10 @@ reload_cse_simplify_operands (rtx insn, rtx testreg)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
op = recog_data.operand[i];
|
op = recog_data.operand[i];
|
||||||
mode = GET_MODE (op);
|
|
||||||
#ifdef LOAD_EXTEND_OP
|
#ifdef LOAD_EXTEND_OP
|
||||||
if (MEM_P (op)
|
if (MEM_P (op)
|
||||||
&& GET_MODE_BITSIZE (mode) < BITS_PER_WORD
|
&& GET_MODE_BITSIZE (GET_MODE (op)) < BITS_PER_WORD
|
||||||
&& LOAD_EXTEND_OP (mode) != UNKNOWN)
|
&& LOAD_EXTEND_OP (GET_MODE (op)) != UNKNOWN)
|
||||||
{
|
{
|
||||||
rtx set = single_set (insn);
|
rtx set = single_set (insn);
|
||||||
|
|
||||||
|
@ -457,7 +455,7 @@ reload_cse_simplify_operands (rtx insn, rtx testreg)
|
||||||
&& SET_DEST (set) == recog_data.operand[1-i])
|
&& SET_DEST (set) == recog_data.operand[1-i])
|
||||||
{
|
{
|
||||||
validate_change (insn, recog_data.operand_loc[i],
|
validate_change (insn, recog_data.operand_loc[i],
|
||||||
gen_rtx_fmt_e (LOAD_EXTEND_OP (mode),
|
gen_rtx_fmt_e (LOAD_EXTEND_OP (GET_MODE (op)),
|
||||||
word_mode, op),
|
word_mode, op),
|
||||||
1);
|
1);
|
||||||
validate_change (insn, recog_data.operand_loc[1-i],
|
validate_change (insn, recog_data.operand_loc[1-i],
|
||||||
|
|
|
@ -1496,7 +1496,7 @@ decode_asm_operands (rtx body, rtx *operands, rtx **operand_locs,
|
||||||
const char **constraints, enum machine_mode *modes,
|
const char **constraints, enum machine_mode *modes,
|
||||||
location_t *loc)
|
location_t *loc)
|
||||||
{
|
{
|
||||||
int noperands, nbase = 0, n, i;
|
int nbase = 0, n, i;
|
||||||
rtx asmop;
|
rtx asmop;
|
||||||
|
|
||||||
switch (GET_CODE (body))
|
switch (GET_CODE (body))
|
||||||
|
@ -1556,9 +1556,6 @@ decode_asm_operands (rtx body, rtx *operands, rtx **operand_locs,
|
||||||
gcc_unreachable ();
|
gcc_unreachable ();
|
||||||
}
|
}
|
||||||
|
|
||||||
noperands = (ASM_OPERANDS_INPUT_LENGTH (asmop)
|
|
||||||
+ ASM_OPERANDS_LABEL_LENGTH (asmop) + nbase);
|
|
||||||
|
|
||||||
n = ASM_OPERANDS_INPUT_LENGTH (asmop);
|
n = ASM_OPERANDS_INPUT_LENGTH (asmop);
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -605,8 +605,6 @@ copy_src_to_dest (rtx insn, rtx src, rtx dest)
|
||||||
rtx *p_move_notes;
|
rtx *p_move_notes;
|
||||||
int src_regno;
|
int src_regno;
|
||||||
int dest_regno;
|
int dest_regno;
|
||||||
int insn_uid;
|
|
||||||
int move_uid;
|
|
||||||
|
|
||||||
/* A REG_LIVE_LENGTH of -1 indicates the register is equivalent to a constant
|
/* A REG_LIVE_LENGTH of -1 indicates the register is equivalent to a constant
|
||||||
or memory location and is used infrequently; a REG_LIVE_LENGTH of -2 is
|
or memory location and is used infrequently; a REG_LIVE_LENGTH of -2 is
|
||||||
|
@ -662,9 +660,6 @@ copy_src_to_dest (rtx insn, rtx src, rtx dest)
|
||||||
*p_move_notes = NULL_RTX;
|
*p_move_notes = NULL_RTX;
|
||||||
*p_insn_notes = NULL_RTX;
|
*p_insn_notes = NULL_RTX;
|
||||||
|
|
||||||
insn_uid = INSN_UID (insn);
|
|
||||||
move_uid = INSN_UID (move_insn);
|
|
||||||
|
|
||||||
/* Update the various register tables. */
|
/* Update the various register tables. */
|
||||||
dest_regno = REGNO (dest);
|
dest_regno = REGNO (dest);
|
||||||
INC_REG_N_SETS (dest_regno, 1);
|
INC_REG_N_SETS (dest_regno, 1);
|
||||||
|
|
|
@ -175,7 +175,10 @@ regrename_optimize (void)
|
||||||
{
|
{
|
||||||
struct du_head *all_chains = 0;
|
struct du_head *all_chains = 0;
|
||||||
HARD_REG_SET unavailable;
|
HARD_REG_SET unavailable;
|
||||||
|
#if 0
|
||||||
HARD_REG_SET regs_seen;
|
HARD_REG_SET regs_seen;
|
||||||
|
CLEAR_HARD_REG_SET (regs_seen);
|
||||||
|
#endif
|
||||||
|
|
||||||
id_to_chain = VEC_alloc (du_head_p, heap, 0);
|
id_to_chain = VEC_alloc (du_head_p, heap, 0);
|
||||||
|
|
||||||
|
@ -199,7 +202,6 @@ regrename_optimize (void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
CLEAR_HARD_REG_SET (regs_seen);
|
|
||||||
while (all_chains)
|
while (all_chains)
|
||||||
{
|
{
|
||||||
int new_reg, best_new_reg, best_nregs;
|
int new_reg, best_new_reg, best_nregs;
|
||||||
|
@ -978,7 +980,7 @@ build_def_use (basic_block bb)
|
||||||
rtx note;
|
rtx note;
|
||||||
rtx old_operands[MAX_RECOG_OPERANDS];
|
rtx old_operands[MAX_RECOG_OPERANDS];
|
||||||
rtx old_dups[MAX_DUP_OPERANDS];
|
rtx old_dups[MAX_DUP_OPERANDS];
|
||||||
int i, icode;
|
int i;
|
||||||
int alt;
|
int alt;
|
||||||
int predicated;
|
int predicated;
|
||||||
enum rtx_code set_code = SET;
|
enum rtx_code set_code = SET;
|
||||||
|
@ -1007,7 +1009,6 @@ build_def_use (basic_block bb)
|
||||||
to be marked unrenamable or even cause us to abort the entire
|
to be marked unrenamable or even cause us to abort the entire
|
||||||
basic block. */
|
basic block. */
|
||||||
|
|
||||||
icode = recog_memoized (insn);
|
|
||||||
extract_insn (insn);
|
extract_insn (insn);
|
||||||
if (! constrain_operands (1))
|
if (! constrain_operands (1))
|
||||||
fatal_insn_not_found (insn);
|
fatal_insn_not_found (insn);
|
||||||
|
|
|
@ -5843,11 +5843,9 @@ make_regions_from_the_rest (void)
|
||||||
edge e;
|
edge e;
|
||||||
edge_iterator ei;
|
edge_iterator ei;
|
||||||
int *degree;
|
int *degree;
|
||||||
int new_regions;
|
|
||||||
|
|
||||||
/* Index in rgn_bb_table where to start allocating new regions. */
|
/* Index in rgn_bb_table where to start allocating new regions. */
|
||||||
cur_rgn_blocks = nr_regions ? RGN_BLOCKS (nr_regions) : 0;
|
cur_rgn_blocks = nr_regions ? RGN_BLOCKS (nr_regions) : 0;
|
||||||
new_regions = nr_regions;
|
|
||||||
|
|
||||||
/* Make regions from all the rest basic blocks - those that don't belong to
|
/* Make regions from all the rest basic blocks - those that don't belong to
|
||||||
any loop or belong to irreducible loops. Prepare the data structures
|
any loop or belong to irreducible loops. Prepare the data structures
|
||||||
|
|
|
@ -457,7 +457,7 @@ gen_conditions_for_pow_int_base (tree base, tree expn,
|
||||||
unsigned *nconds)
|
unsigned *nconds)
|
||||||
{
|
{
|
||||||
gimple base_def;
|
gimple base_def;
|
||||||
tree base_nm, base_val0;
|
tree base_val0;
|
||||||
tree base_var, int_type;
|
tree base_var, int_type;
|
||||||
tree temp, tempn;
|
tree temp, tempn;
|
||||||
tree cst0;
|
tree cst0;
|
||||||
|
@ -466,7 +466,6 @@ gen_conditions_for_pow_int_base (tree base, tree expn,
|
||||||
inp_domain exp_domain;
|
inp_domain exp_domain;
|
||||||
|
|
||||||
base_def = SSA_NAME_DEF_STMT (base);
|
base_def = SSA_NAME_DEF_STMT (base);
|
||||||
base_nm = gimple_assign_lhs (base_def);
|
|
||||||
base_val0 = gimple_assign_rhs1 (base_def);
|
base_val0 = gimple_assign_rhs1 (base_def);
|
||||||
base_var = SSA_NAME_VAR (base_val0);
|
base_var = SSA_NAME_VAR (base_val0);
|
||||||
int_type = TREE_TYPE (base_var);
|
int_type = TREE_TYPE (base_var);
|
||||||
|
@ -483,10 +482,10 @@ gen_conditions_for_pow_int_base (tree base, tree expn,
|
||||||
else if (bit_sz == 16)
|
else if (bit_sz == 16)
|
||||||
max_exp = 64;
|
max_exp = 64;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gcc_assert (bit_sz == MAX_BASE_INT_BIT_SIZE);
|
gcc_assert (bit_sz == MAX_BASE_INT_BIT_SIZE);
|
||||||
max_exp = 32;
|
max_exp = 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For pow ((double)x, y), generate the following conditions:
|
/* For pow ((double)x, y), generate the following conditions:
|
||||||
cond 1:
|
cond 1:
|
||||||
|
@ -548,7 +547,7 @@ gen_conditions_for_pow (gimple pow_call, VEC (gimple, heap) *conds,
|
||||||
unsigned *nconds)
|
unsigned *nconds)
|
||||||
{
|
{
|
||||||
tree base, expn;
|
tree base, expn;
|
||||||
enum tree_code bc, ec;
|
enum tree_code bc;
|
||||||
|
|
||||||
#ifdef ENABLE_CHECKING
|
#ifdef ENABLE_CHECKING
|
||||||
gcc_assert (check_pow (pow_call));
|
gcc_assert (check_pow (pow_call));
|
||||||
|
@ -560,12 +559,11 @@ gen_conditions_for_pow (gimple pow_call, VEC (gimple, heap) *conds,
|
||||||
expn = gimple_call_arg (pow_call, 1);
|
expn = gimple_call_arg (pow_call, 1);
|
||||||
|
|
||||||
bc = TREE_CODE (base);
|
bc = TREE_CODE (base);
|
||||||
ec = TREE_CODE (expn);
|
|
||||||
|
|
||||||
if (bc == REAL_CST)
|
if (bc == REAL_CST)
|
||||||
gen_conditions_for_pow_cst_base (base, expn, conds, nconds);
|
gen_conditions_for_pow_cst_base (base, expn, conds, nconds);
|
||||||
else if (bc == SSA_NAME)
|
else if (bc == SSA_NAME)
|
||||||
gen_conditions_for_pow_int_base (base, expn, conds, nconds);
|
gen_conditions_for_pow_int_base (base, expn, conds, nconds);
|
||||||
else
|
else
|
||||||
gcc_unreachable ();
|
gcc_unreachable ();
|
||||||
}
|
}
|
||||||
|
|
|
@ -434,11 +434,9 @@ create_one_component_var (tree type, tree orig, const char *prefix,
|
||||||
if (DECL_NAME (orig) && !DECL_IGNORED_P (orig))
|
if (DECL_NAME (orig) && !DECL_IGNORED_P (orig))
|
||||||
{
|
{
|
||||||
const char *name = IDENTIFIER_POINTER (DECL_NAME (orig));
|
const char *name = IDENTIFIER_POINTER (DECL_NAME (orig));
|
||||||
tree inner_type;
|
|
||||||
|
|
||||||
DECL_NAME (r) = get_identifier (ACONCAT ((name, suffix, NULL)));
|
DECL_NAME (r) = get_identifier (ACONCAT ((name, suffix, NULL)));
|
||||||
|
|
||||||
inner_type = TREE_TYPE (TREE_TYPE (orig));
|
|
||||||
SET_DECL_DEBUG_EXPR (r, build1 (code, type, orig));
|
SET_DECL_DEBUG_EXPR (r, build1 (code, type, orig));
|
||||||
DECL_DEBUG_EXPR_IS_FROM (r) = 1;
|
DECL_DEBUG_EXPR_IS_FROM (r) = 1;
|
||||||
DECL_IGNORED_P (r) = 0;
|
DECL_IGNORED_P (r) = 0;
|
||||||
|
|
|
@ -598,9 +598,7 @@ set_default_def (tree var, tree def)
|
||||||
bool
|
bool
|
||||||
add_referenced_var (tree var)
|
add_referenced_var (tree var)
|
||||||
{
|
{
|
||||||
var_ann_t v_ann;
|
get_var_ann (var);
|
||||||
|
|
||||||
v_ann = get_var_ann (var);
|
|
||||||
gcc_assert (DECL_P (var));
|
gcc_assert (DECL_P (var));
|
||||||
|
|
||||||
/* Insert VAR into the referenced_vars has table if it isn't present. */
|
/* Insert VAR into the referenced_vars has table if it isn't present. */
|
||||||
|
|
|
@ -118,7 +118,7 @@ eni_weights eni_time_weights;
|
||||||
|
|
||||||
/* Prototypes. */
|
/* Prototypes. */
|
||||||
|
|
||||||
static tree declare_return_variable (copy_body_data *, tree, tree, tree *);
|
static tree declare_return_variable (copy_body_data *, tree, tree);
|
||||||
static void remap_block (tree *, copy_body_data *);
|
static void remap_block (tree *, copy_body_data *);
|
||||||
static void copy_bind_expr (tree *, int *, copy_body_data *);
|
static void copy_bind_expr (tree *, int *, copy_body_data *);
|
||||||
static tree mark_local_for_remap_r (tree *, int *, void *);
|
static tree mark_local_for_remap_r (tree *, int *, void *);
|
||||||
|
@ -256,10 +256,8 @@ tree
|
||||||
remap_decl (tree decl, copy_body_data *id)
|
remap_decl (tree decl, copy_body_data *id)
|
||||||
{
|
{
|
||||||
tree *n;
|
tree *n;
|
||||||
tree fn;
|
|
||||||
|
|
||||||
/* We only remap local variables in the current function. */
|
/* We only remap local variables in the current function. */
|
||||||
fn = id->src_fn;
|
|
||||||
|
|
||||||
/* See if we have remapped this declaration. */
|
/* See if we have remapped this declaration. */
|
||||||
|
|
||||||
|
@ -590,7 +588,6 @@ remap_block (tree *block, copy_body_data *id)
|
||||||
{
|
{
|
||||||
tree old_block;
|
tree old_block;
|
||||||
tree new_block;
|
tree new_block;
|
||||||
tree fn;
|
|
||||||
|
|
||||||
/* Make the new block. */
|
/* Make the new block. */
|
||||||
old_block = *block;
|
old_block = *block;
|
||||||
|
@ -607,8 +604,6 @@ remap_block (tree *block, copy_body_data *id)
|
||||||
&BLOCK_NONLOCALIZED_VARS (new_block),
|
&BLOCK_NONLOCALIZED_VARS (new_block),
|
||||||
id);
|
id);
|
||||||
|
|
||||||
fn = id->dst_fn;
|
|
||||||
|
|
||||||
if (id->transform_lang_insert_block)
|
if (id->transform_lang_insert_block)
|
||||||
id->transform_lang_insert_block (new_block);
|
id->transform_lang_insert_block (new_block);
|
||||||
|
|
||||||
|
@ -2533,13 +2528,11 @@ initialize_inlined_parameters (copy_body_data *id, gimple stmt,
|
||||||
is set only for CALL_EXPR_RETURN_SLOT_OPT. MODIFY_DEST, if non-null,
|
is set only for CALL_EXPR_RETURN_SLOT_OPT. MODIFY_DEST, if non-null,
|
||||||
was the LHS of the MODIFY_EXPR to which this call is the RHS.
|
was the LHS of the MODIFY_EXPR to which this call is the RHS.
|
||||||
|
|
||||||
The return value is a (possibly null) value that is the result of the
|
The return value is a (possibly null) value that holds the result
|
||||||
function as seen by the callee. *USE_P is a (possibly null) value that
|
as seen by the caller. */
|
||||||
holds the result as seen by the caller. */
|
|
||||||
|
|
||||||
static tree
|
static tree
|
||||||
declare_return_variable (copy_body_data *id, tree return_slot, tree modify_dest,
|
declare_return_variable (copy_body_data *id, tree return_slot, tree modify_dest)
|
||||||
tree *use_p)
|
|
||||||
{
|
{
|
||||||
tree callee = id->src_fn;
|
tree callee = id->src_fn;
|
||||||
tree caller = id->dst_fn;
|
tree caller = id->dst_fn;
|
||||||
|
@ -2551,10 +2544,7 @@ declare_return_variable (copy_body_data *id, tree return_slot, tree modify_dest,
|
||||||
/* We don't need to do anything for functions that don't return
|
/* We don't need to do anything for functions that don't return
|
||||||
anything. */
|
anything. */
|
||||||
if (!result || VOID_TYPE_P (callee_type))
|
if (!result || VOID_TYPE_P (callee_type))
|
||||||
{
|
return NULL_TREE;
|
||||||
*use_p = NULL_TREE;
|
|
||||||
return NULL_TREE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If there was a return slot, then the return value is the
|
/* If there was a return slot, then the return value is the
|
||||||
dereferenced address of that object. */
|
dereferenced address of that object. */
|
||||||
|
@ -2705,8 +2695,7 @@ declare_return_variable (copy_body_data *id, tree return_slot, tree modify_dest,
|
||||||
/* Remember this so we can ignore it in remap_decls. */
|
/* Remember this so we can ignore it in remap_decls. */
|
||||||
id->retvar = var;
|
id->retvar = var;
|
||||||
|
|
||||||
*use_p = use;
|
return use;
|
||||||
return var;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Callback through walk_tree. Determine if a DECL_INITIAL makes reference
|
/* Callback through walk_tree. Determine if a DECL_INITIAL makes reference
|
||||||
|
@ -3506,7 +3495,7 @@ get_indirect_callee_fndecl (struct cgraph_node *node, gimple stmt)
|
||||||
static bool
|
static bool
|
||||||
expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
|
expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
|
||||||
{
|
{
|
||||||
tree retvar, use_retvar;
|
tree use_retvar;
|
||||||
tree fn;
|
tree fn;
|
||||||
struct pointer_map_t *st, *dst;
|
struct pointer_map_t *st, *dst;
|
||||||
tree return_slot;
|
tree return_slot;
|
||||||
|
@ -3725,7 +3714,7 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Declare the return variable for the function. */
|
/* Declare the return variable for the function. */
|
||||||
retvar = declare_return_variable (id, return_slot, modify_dest, &use_retvar);
|
use_retvar = declare_return_variable (id, return_slot, modify_dest);
|
||||||
|
|
||||||
/* Add local vars in this inlined callee to caller. */
|
/* Add local vars in this inlined callee to caller. */
|
||||||
t_step = id->src_cfun->local_decls;
|
t_step = id->src_cfun->local_decls;
|
||||||
|
@ -3981,7 +3970,6 @@ unsigned int
|
||||||
optimize_inline_calls (tree fn)
|
optimize_inline_calls (tree fn)
|
||||||
{
|
{
|
||||||
copy_body_data id;
|
copy_body_data id;
|
||||||
tree prev_fn;
|
|
||||||
basic_block bb;
|
basic_block bb;
|
||||||
int last = n_basic_blocks;
|
int last = n_basic_blocks;
|
||||||
struct gimplify_ctx gctx;
|
struct gimplify_ctx gctx;
|
||||||
|
@ -3998,12 +3986,8 @@ optimize_inline_calls (tree fn)
|
||||||
id.src_node = id.dst_node = cgraph_node (fn);
|
id.src_node = id.dst_node = cgraph_node (fn);
|
||||||
id.dst_fn = fn;
|
id.dst_fn = fn;
|
||||||
/* Or any functions that aren't finished yet. */
|
/* Or any functions that aren't finished yet. */
|
||||||
prev_fn = NULL_TREE;
|
|
||||||
if (current_function_decl)
|
if (current_function_decl)
|
||||||
{
|
id.dst_fn = current_function_decl;
|
||||||
id.dst_fn = current_function_decl;
|
|
||||||
prev_fn = current_function_decl;
|
|
||||||
}
|
|
||||||
|
|
||||||
id.copy_decl = copy_decl_maybe_to_var;
|
id.copy_decl = copy_decl_maybe_to_var;
|
||||||
id.transform_call_graph_edges = CB_CGE_DUPLICATE;
|
id.transform_call_graph_edges = CB_CGE_DUPLICATE;
|
||||||
|
|
|
@ -521,7 +521,6 @@ mark_nodes_having_upstream_mem_writes (struct graph *rdg)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
VEC (int, heap) *nodes = VEC_alloc (int, heap, 3);
|
VEC (int, heap) *nodes = VEC_alloc (int, heap, 3);
|
||||||
bool has_upstream_mem_write_p = false;
|
|
||||||
|
|
||||||
graphds_dfs (rdg, &v, 1, &nodes, false, NULL);
|
graphds_dfs (rdg, &v, 1, &nodes, false, NULL);
|
||||||
|
|
||||||
|
@ -539,7 +538,6 @@ mark_nodes_having_upstream_mem_writes (struct graph *rdg)
|
||||||
should be placed in the same partition. */
|
should be placed in the same partition. */
|
||||||
|| has_anti_dependence (&(rdg->vertices[x])))
|
|| has_anti_dependence (&(rdg->vertices[x])))
|
||||||
{
|
{
|
||||||
has_upstream_mem_write_p = true;
|
|
||||||
bitmap_set_bit (upstream_mem_writes, x);
|
bitmap_set_bit (upstream_mem_writes, x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -378,14 +378,11 @@ void
|
||||||
tree_rest_of_compilation (tree fndecl)
|
tree_rest_of_compilation (tree fndecl)
|
||||||
{
|
{
|
||||||
location_t saved_loc;
|
location_t saved_loc;
|
||||||
struct cgraph_node *node;
|
|
||||||
|
|
||||||
timevar_push (TV_EXPAND);
|
timevar_push (TV_EXPAND);
|
||||||
|
|
||||||
gcc_assert (cgraph_global_info_ready);
|
gcc_assert (cgraph_global_info_ready);
|
||||||
|
|
||||||
node = cgraph_node (fndecl);
|
|
||||||
|
|
||||||
/* Initialize the default bitmap obstack. */
|
/* Initialize the default bitmap obstack. */
|
||||||
bitmap_obstack_initialize (NULL);
|
bitmap_obstack_initialize (NULL);
|
||||||
|
|
||||||
|
|
|
@ -862,13 +862,12 @@ create_call_for_reduction_1 (void **slot, void *data)
|
||||||
basic_block bb;
|
basic_block bb;
|
||||||
basic_block new_bb;
|
basic_block new_bb;
|
||||||
edge e;
|
edge e;
|
||||||
tree t, addr, addr_type, ref, x;
|
tree t, addr, ref, x;
|
||||||
tree tmp_load, name;
|
tree tmp_load, name;
|
||||||
gimple load;
|
gimple load;
|
||||||
|
|
||||||
load_struct = fold_build1 (INDIRECT_REF, struct_type, clsn_data->load);
|
load_struct = fold_build1 (INDIRECT_REF, struct_type, clsn_data->load);
|
||||||
t = build3 (COMPONENT_REF, type, load_struct, reduc->field, NULL_TREE);
|
t = build3 (COMPONENT_REF, type, load_struct, reduc->field, NULL_TREE);
|
||||||
addr_type = build_pointer_type (type);
|
|
||||||
|
|
||||||
addr = build_addr (t, current_function_decl);
|
addr = build_addr (t, current_function_decl);
|
||||||
|
|
||||||
|
@ -1405,7 +1404,7 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
|
||||||
{
|
{
|
||||||
gimple_stmt_iterator gsi;
|
gimple_stmt_iterator gsi;
|
||||||
basic_block bb, paral_bb, for_bb, ex_bb;
|
basic_block bb, paral_bb, for_bb, ex_bb;
|
||||||
tree t, param, res;
|
tree t, param;
|
||||||
gimple stmt, for_stmt, phi, cond_stmt;
|
gimple stmt, for_stmt, phi, cond_stmt;
|
||||||
tree cvar, cvar_init, initvar, cvar_next, cvar_base, type;
|
tree cvar, cvar_init, initvar, cvar_next, cvar_base, type;
|
||||||
edge exit, nexit, guard, end, e;
|
edge exit, nexit, guard, end, e;
|
||||||
|
@ -1474,7 +1473,6 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
|
||||||
source_location locus;
|
source_location locus;
|
||||||
tree def;
|
tree def;
|
||||||
phi = gsi_stmt (gsi);
|
phi = gsi_stmt (gsi);
|
||||||
res = PHI_RESULT (phi);
|
|
||||||
stmt = SSA_NAME_DEF_STMT (PHI_ARG_DEF_FROM_EDGE (phi, exit));
|
stmt = SSA_NAME_DEF_STMT (PHI_ARG_DEF_FROM_EDGE (phi, exit));
|
||||||
|
|
||||||
def = PHI_ARG_DEF_FROM_EDGE (stmt, loop_preheader_edge (loop));
|
def = PHI_ARG_DEF_FROM_EDGE (stmt, loop_preheader_edge (loop));
|
||||||
|
@ -1531,7 +1529,6 @@ static void
|
||||||
gen_parallel_loop (struct loop *loop, htab_t reduction_list,
|
gen_parallel_loop (struct loop *loop, htab_t reduction_list,
|
||||||
unsigned n_threads, struct tree_niter_desc *niter)
|
unsigned n_threads, struct tree_niter_desc *niter)
|
||||||
{
|
{
|
||||||
struct loop *nloop;
|
|
||||||
loop_iterator li;
|
loop_iterator li;
|
||||||
tree many_iterations_cond, type, nit;
|
tree many_iterations_cond, type, nit;
|
||||||
tree arg_struct, new_arg_struct;
|
tree arg_struct, new_arg_struct;
|
||||||
|
@ -1624,8 +1621,8 @@ gen_parallel_loop (struct loop *loop, htab_t reduction_list,
|
||||||
|
|
||||||
/* We assume that the loop usually iterates a lot. */
|
/* We assume that the loop usually iterates a lot. */
|
||||||
prob = 4 * REG_BR_PROB_BASE / 5;
|
prob = 4 * REG_BR_PROB_BASE / 5;
|
||||||
nloop = loop_version (loop, many_iterations_cond, NULL,
|
loop_version (loop, many_iterations_cond, NULL,
|
||||||
prob, prob, REG_BR_PROB_BASE - prob, true);
|
prob, prob, REG_BR_PROB_BASE - prob, true);
|
||||||
update_ssa (TODO_update_ssa);
|
update_ssa (TODO_update_ssa);
|
||||||
free_original_copy_tables ();
|
free_original_copy_tables ();
|
||||||
|
|
||||||
|
|
|
@ -767,7 +767,6 @@ refs_may_alias_p_1 (ao_ref *ref1, ao_ref *ref2, bool tbaa_p)
|
||||||
{
|
{
|
||||||
tree base1, base2;
|
tree base1, base2;
|
||||||
HOST_WIDE_INT offset1 = 0, offset2 = 0;
|
HOST_WIDE_INT offset1 = 0, offset2 = 0;
|
||||||
HOST_WIDE_INT size1 = -1, size2 = -1;
|
|
||||||
HOST_WIDE_INT max_size1 = -1, max_size2 = -1;
|
HOST_WIDE_INT max_size1 = -1, max_size2 = -1;
|
||||||
bool var1_p, var2_p, ind1_p, ind2_p;
|
bool var1_p, var2_p, ind1_p, ind2_p;
|
||||||
alias_set_type set;
|
alias_set_type set;
|
||||||
|
@ -788,11 +787,9 @@ refs_may_alias_p_1 (ao_ref *ref1, ao_ref *ref2, bool tbaa_p)
|
||||||
/* Decompose the references into their base objects and the access. */
|
/* Decompose the references into their base objects and the access. */
|
||||||
base1 = ao_ref_base (ref1);
|
base1 = ao_ref_base (ref1);
|
||||||
offset1 = ref1->offset;
|
offset1 = ref1->offset;
|
||||||
size1 = ref1->size;
|
|
||||||
max_size1 = ref1->max_size;
|
max_size1 = ref1->max_size;
|
||||||
base2 = ao_ref_base (ref2);
|
base2 = ao_ref_base (ref2);
|
||||||
offset2 = ref2->offset;
|
offset2 = ref2->offset;
|
||||||
size2 = ref2->size;
|
|
||||||
max_size2 = ref2->max_size;
|
max_size2 = ref2->max_size;
|
||||||
|
|
||||||
/* We can end up with registers or constants as bases for example from
|
/* We can end up with registers or constants as bases for example from
|
||||||
|
|
|
@ -94,8 +94,10 @@ split_to_var_and_offset (tree expr, tree *var, mpz_t offset)
|
||||||
|
|
||||||
*var = op0;
|
*var = op0;
|
||||||
/* Always sign extend the offset. */
|
/* Always sign extend the offset. */
|
||||||
off = double_int_sext (tree_to_double_int (op1),
|
off = tree_to_double_int (op1);
|
||||||
TYPE_PRECISION (type));
|
if (negate)
|
||||||
|
off = double_int_neg (off);
|
||||||
|
off = double_int_sext (off, TYPE_PRECISION (type));
|
||||||
mpz_set_double_int (offset, off, false);
|
mpz_set_double_int (offset, off, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -653,13 +653,11 @@ static void
|
||||||
add_stmt_operand (tree *var_p, gimple stmt, int flags)
|
add_stmt_operand (tree *var_p, gimple stmt, int flags)
|
||||||
{
|
{
|
||||||
tree var, sym;
|
tree var, sym;
|
||||||
var_ann_t v_ann;
|
|
||||||
|
|
||||||
gcc_assert (SSA_VAR_P (*var_p));
|
gcc_assert (SSA_VAR_P (*var_p));
|
||||||
|
|
||||||
var = *var_p;
|
var = *var_p;
|
||||||
sym = (TREE_CODE (var) == SSA_NAME ? SSA_NAME_VAR (var) : var);
|
sym = (TREE_CODE (var) == SSA_NAME ? SSA_NAME_VAR (var) : var);
|
||||||
v_ann = var_ann (sym);
|
|
||||||
|
|
||||||
/* Mark statements with volatile operands. */
|
/* Mark statements with volatile operands. */
|
||||||
if (TREE_THIS_VOLATILE (sym))
|
if (TREE_THIS_VOLATILE (sym))
|
||||||
|
|
|
@ -1023,11 +1023,10 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *vr_)
|
||||||
gimple def_stmt = SSA_NAME_DEF_STMT (vuse);
|
gimple def_stmt = SSA_NAME_DEF_STMT (vuse);
|
||||||
tree fndecl;
|
tree fndecl;
|
||||||
tree base;
|
tree base;
|
||||||
HOST_WIDE_INT offset, size, maxsize;
|
HOST_WIDE_INT offset, maxsize;
|
||||||
|
|
||||||
base = ao_ref_base (ref);
|
base = ao_ref_base (ref);
|
||||||
offset = ref->offset;
|
offset = ref->offset;
|
||||||
size = ref->size;
|
|
||||||
maxsize = ref->max_size;
|
maxsize = ref->max_size;
|
||||||
|
|
||||||
/* If we cannot constrain the size of the reference we cannot
|
/* If we cannot constrain the size of the reference we cannot
|
||||||
|
|
|
@ -273,7 +273,6 @@ statement_sink_location (gimple stmt, basic_block frombb,
|
||||||
def_operand_p def_p;
|
def_operand_p def_p;
|
||||||
ssa_op_iter iter;
|
ssa_op_iter iter;
|
||||||
imm_use_iterator imm_iter;
|
imm_use_iterator imm_iter;
|
||||||
enum tree_code code;
|
|
||||||
|
|
||||||
FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_ALL_DEFS)
|
FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_ALL_DEFS)
|
||||||
{
|
{
|
||||||
|
@ -320,7 +319,6 @@ statement_sink_location (gimple stmt, basic_block frombb,
|
||||||
to use specific hard registers.
|
to use specific hard registers.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
code = gimple_assign_rhs_code (stmt);
|
|
||||||
if (stmt_ends_bb_p (stmt)
|
if (stmt_ends_bb_p (stmt)
|
||||||
|| gimple_has_side_effects (stmt)
|
|| gimple_has_side_effects (stmt)
|
||||||
|| is_hidden_global_store (stmt)
|
|| is_hidden_global_store (stmt)
|
||||||
|
|
|
@ -1354,7 +1354,6 @@ scc_visit (constraint_graph_t graph, struct scc_info *si, unsigned int n)
|
||||||
&& si->dfs[VEC_last (unsigned, si->scc_stack)] >= my_dfs)
|
&& si->dfs[VEC_last (unsigned, si->scc_stack)] >= my_dfs)
|
||||||
{
|
{
|
||||||
bitmap scc = BITMAP_ALLOC (NULL);
|
bitmap scc = BITMAP_ALLOC (NULL);
|
||||||
bool have_ref_node = n >= FIRST_REF_NODE;
|
|
||||||
unsigned int lowest_node;
|
unsigned int lowest_node;
|
||||||
bitmap_iterator bi;
|
bitmap_iterator bi;
|
||||||
|
|
||||||
|
@ -1366,8 +1365,6 @@ scc_visit (constraint_graph_t graph, struct scc_info *si, unsigned int n)
|
||||||
unsigned int w = VEC_pop (unsigned, si->scc_stack);
|
unsigned int w = VEC_pop (unsigned, si->scc_stack);
|
||||||
|
|
||||||
bitmap_set_bit (scc, w);
|
bitmap_set_bit (scc, w);
|
||||||
if (w >= FIRST_REF_NODE)
|
|
||||||
have_ref_node = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lowest_node = bitmap_first_set_bit (scc);
|
lowest_node = bitmap_first_set_bit (scc);
|
||||||
|
@ -3283,14 +3280,11 @@ do_structure_copy (tree lhsop, tree rhsop)
|
||||||
&& (rhsp->type == SCALAR
|
&& (rhsp->type == SCALAR
|
||||||
|| rhsp->type == ADDRESSOF))
|
|| rhsp->type == ADDRESSOF))
|
||||||
{
|
{
|
||||||
tree lhsbase, rhsbase;
|
|
||||||
HOST_WIDE_INT lhssize, lhsmaxsize, lhsoffset;
|
HOST_WIDE_INT lhssize, lhsmaxsize, lhsoffset;
|
||||||
HOST_WIDE_INT rhssize, rhsmaxsize, rhsoffset;
|
HOST_WIDE_INT rhssize, rhsmaxsize, rhsoffset;
|
||||||
unsigned k = 0;
|
unsigned k = 0;
|
||||||
lhsbase = get_ref_base_and_extent (lhsop, &lhsoffset,
|
get_ref_base_and_extent (lhsop, &lhsoffset, &lhssize, &lhsmaxsize);
|
||||||
&lhssize, &lhsmaxsize);
|
get_ref_base_and_extent (rhsop, &rhsoffset, &rhssize, &rhsmaxsize);
|
||||||
rhsbase = get_ref_base_and_extent (rhsop, &rhsoffset,
|
|
||||||
&rhssize, &rhsmaxsize);
|
|
||||||
for (j = 0; VEC_iterate (ce_s, lhsc, j, lhsp);)
|
for (j = 0; VEC_iterate (ce_s, lhsc, j, lhsp);)
|
||||||
{
|
{
|
||||||
varinfo_t lhsv, rhsv;
|
varinfo_t lhsv, rhsv;
|
||||||
|
@ -3640,11 +3634,9 @@ find_func_aliases (gimple origt)
|
||||||
get_constraint_for (gimple_phi_result (t), &lhsc);
|
get_constraint_for (gimple_phi_result (t), &lhsc);
|
||||||
for (i = 0; i < gimple_phi_num_args (t); i++)
|
for (i = 0; i < gimple_phi_num_args (t); i++)
|
||||||
{
|
{
|
||||||
tree rhstype;
|
|
||||||
tree strippedrhs = PHI_ARG_DEF (t, i);
|
tree strippedrhs = PHI_ARG_DEF (t, i);
|
||||||
|
|
||||||
STRIP_NOPS (strippedrhs);
|
STRIP_NOPS (strippedrhs);
|
||||||
rhstype = TREE_TYPE (strippedrhs);
|
|
||||||
get_constraint_for (gimple_phi_arg_def (t, i), &rhsc);
|
get_constraint_for (gimple_phi_arg_def (t, i), &rhsc);
|
||||||
|
|
||||||
for (j = 0; VEC_iterate (ce_s, lhsc, j, c); j++)
|
for (j = 0; VEC_iterate (ce_s, lhsc, j, c); j++)
|
||||||
|
@ -5681,8 +5673,6 @@ ipa_pta_execute (void)
|
||||||
/* Build the constraints. */
|
/* Build the constraints. */
|
||||||
for (node = cgraph_nodes; node; node = node->next)
|
for (node = cgraph_nodes; node; node = node->next)
|
||||||
{
|
{
|
||||||
unsigned int varid;
|
|
||||||
|
|
||||||
/* Nodes without a body are not interesting. Especially do not
|
/* Nodes without a body are not interesting. Especially do not
|
||||||
visit clones at this point for now - we get duplicate decls
|
visit clones at this point for now - we get duplicate decls
|
||||||
there for inline clones at least. */
|
there for inline clones at least. */
|
||||||
|
@ -5696,8 +5686,8 @@ ipa_pta_execute (void)
|
||||||
if (node->local.externally_visible)
|
if (node->local.externally_visible)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
varid = create_function_info_for (node->decl,
|
create_function_info_for (node->decl,
|
||||||
cgraph_node_name (node));
|
cgraph_node_name (node));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (node = cgraph_nodes; node; node = node->next)
|
for (node = cgraph_nodes; node; node = node->next)
|
||||||
|
|
|
@ -635,7 +635,6 @@ thread_single_edge (edge e)
|
||||||
basic_block bb = e->dest;
|
basic_block bb = e->dest;
|
||||||
edge eto = (edge) e->aux;
|
edge eto = (edge) e->aux;
|
||||||
struct redirection_data rd;
|
struct redirection_data rd;
|
||||||
struct local_info local_info;
|
|
||||||
|
|
||||||
e->aux = NULL;
|
e->aux = NULL;
|
||||||
|
|
||||||
|
@ -657,7 +656,6 @@ thread_single_edge (edge e)
|
||||||
/* Otherwise, we need to create a copy. */
|
/* Otherwise, we need to create a copy. */
|
||||||
update_bb_profile_for_threading (bb, EDGE_FREQUENCY (e), e->count, eto);
|
update_bb_profile_for_threading (bb, EDGE_FREQUENCY (e), e->count, eto);
|
||||||
|
|
||||||
local_info.bb = bb;
|
|
||||||
rd.outgoing_edge = eto;
|
rd.outgoing_edge = eto;
|
||||||
|
|
||||||
create_block_for_threading (bb, &rd);
|
create_block_for_threading (bb, &rd);
|
||||||
|
|
|
@ -1885,7 +1885,6 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo)
|
||||||
{
|
{
|
||||||
gimple stmt;
|
gimple stmt;
|
||||||
stmt_vec_info stmt_info;
|
stmt_vec_info stmt_info;
|
||||||
basic_block bb;
|
|
||||||
tree base, offset, init;
|
tree base, offset, init;
|
||||||
|
|
||||||
if (!dr || !DR_REF (dr))
|
if (!dr || !DR_REF (dr))
|
||||||
|
@ -1923,7 +1922,6 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo)
|
||||||
init = unshare_expr (DR_INIT (dr));
|
init = unshare_expr (DR_INIT (dr));
|
||||||
|
|
||||||
/* Update DR field in stmt_vec_info struct. */
|
/* Update DR field in stmt_vec_info struct. */
|
||||||
bb = gimple_bb (stmt);
|
|
||||||
|
|
||||||
/* If the dataref is in an inner-loop of the loop that is considered for
|
/* If the dataref is in an inner-loop of the loop that is considered for
|
||||||
for vectorization, we also want to analyze the access relative to
|
for vectorization, we also want to analyze the access relative to
|
||||||
|
@ -2764,13 +2762,10 @@ vect_permute_store_chain (VEC(tree,heap) *dr_chain,
|
||||||
tree perm_dest, vect1, vect2, high, low;
|
tree perm_dest, vect1, vect2, high, low;
|
||||||
gimple perm_stmt;
|
gimple perm_stmt;
|
||||||
tree vectype = STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt));
|
tree vectype = STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt));
|
||||||
tree scalar_dest;
|
|
||||||
int i;
|
int i;
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
enum tree_code high_code, low_code;
|
enum tree_code high_code, low_code;
|
||||||
|
|
||||||
scalar_dest = gimple_assign_lhs (stmt);
|
|
||||||
|
|
||||||
/* Check that the operation is supported. */
|
/* Check that the operation is supported. */
|
||||||
if (!vect_strided_store_supported (vectype))
|
if (!vect_strided_store_supported (vectype))
|
||||||
return false;
|
return false;
|
||||||
|
@ -3382,7 +3377,6 @@ vect_supportable_dr_alignment (struct data_reference *dr)
|
||||||
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
|
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
|
||||||
tree vectype = STMT_VINFO_VECTYPE (stmt_info);
|
tree vectype = STMT_VINFO_VECTYPE (stmt_info);
|
||||||
enum machine_mode mode = TYPE_MODE (vectype);
|
enum machine_mode mode = TYPE_MODE (vectype);
|
||||||
bool invariant_in_outerloop = false;
|
|
||||||
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
|
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
|
||||||
struct loop *vect_loop = NULL;
|
struct loop *vect_loop = NULL;
|
||||||
bool nested_in_vect_loop = false;
|
bool nested_in_vect_loop = false;
|
||||||
|
@ -3397,13 +3391,6 @@ vect_supportable_dr_alignment (struct data_reference *dr)
|
||||||
vect_loop = LOOP_VINFO_LOOP (loop_vinfo);
|
vect_loop = LOOP_VINFO_LOOP (loop_vinfo);
|
||||||
nested_in_vect_loop = nested_in_vect_loop_p (vect_loop, stmt);
|
nested_in_vect_loop = nested_in_vect_loop_p (vect_loop, stmt);
|
||||||
|
|
||||||
if (nested_in_vect_loop)
|
|
||||||
{
|
|
||||||
tree outerloop_step = STMT_VINFO_DR_STEP (stmt_info);
|
|
||||||
invariant_in_outerloop =
|
|
||||||
(tree_int_cst_compare (outerloop_step, size_zero_node) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Possibly unaligned access. */
|
/* Possibly unaligned access. */
|
||||||
|
|
||||||
/* We can choose between using the implicit realignment scheme (generating
|
/* We can choose between using the implicit realignment scheme (generating
|
||||||
|
|
|
@ -2327,7 +2327,6 @@ vect_loop_versioning (loop_vec_info loop_vinfo, bool do_versioning,
|
||||||
tree *cond_expr, gimple_seq *cond_expr_stmt_list)
|
tree *cond_expr, gimple_seq *cond_expr_stmt_list)
|
||||||
{
|
{
|
||||||
struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
|
struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
|
||||||
struct loop *nloop;
|
|
||||||
basic_block condition_bb;
|
basic_block condition_bb;
|
||||||
gimple_stmt_iterator gsi, cond_exp_gsi;
|
gimple_stmt_iterator gsi, cond_exp_gsi;
|
||||||
basic_block merge_bb;
|
basic_block merge_bb;
|
||||||
|
@ -2374,8 +2373,8 @@ vect_loop_versioning (loop_vec_info loop_vinfo, bool do_versioning,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
initialize_original_copy_tables ();
|
initialize_original_copy_tables ();
|
||||||
nloop = loop_version (loop, *cond_expr, &condition_bb,
|
loop_version (loop, *cond_expr, &condition_bb,
|
||||||
prob, prob, REG_BR_PROB_BASE - prob, true);
|
prob, prob, REG_BR_PROB_BASE - prob, true);
|
||||||
free_original_copy_tables();
|
free_original_copy_tables();
|
||||||
|
|
||||||
/* Loop versioning violates an assumption we try to maintain during
|
/* Loop versioning violates an assumption we try to maintain during
|
||||||
|
|
|
@ -889,7 +889,7 @@ vect_analyze_loop_form (struct loop *loop)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
struct loop *innerloop = loop->inner;
|
struct loop *innerloop = loop->inner;
|
||||||
edge backedge, entryedge;
|
edge entryedge;
|
||||||
|
|
||||||
/* Nested loop. We currently require that the loop is doubly-nested,
|
/* Nested loop. We currently require that the loop is doubly-nested,
|
||||||
contains a single inner loop, and the number of BBs is exactly 5.
|
contains a single inner loop, and the number of BBs is exactly 5.
|
||||||
|
@ -943,13 +943,9 @@ vect_analyze_loop_form (struct loop *loop)
|
||||||
}
|
}
|
||||||
|
|
||||||
gcc_assert (EDGE_COUNT (innerloop->header->preds) == 2);
|
gcc_assert (EDGE_COUNT (innerloop->header->preds) == 2);
|
||||||
backedge = EDGE_PRED (innerloop->header, 1);
|
|
||||||
entryedge = EDGE_PRED (innerloop->header, 0);
|
entryedge = EDGE_PRED (innerloop->header, 0);
|
||||||
if (EDGE_PRED (innerloop->header, 0)->src == innerloop->latch)
|
if (EDGE_PRED (innerloop->header, 0)->src == innerloop->latch)
|
||||||
{
|
entryedge = EDGE_PRED (innerloop->header, 1);
|
||||||
backedge = EDGE_PRED (innerloop->header, 0);
|
|
||||||
entryedge = EDGE_PRED (innerloop->header, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entryedge->src != loop->header
|
if (entryedge->src != loop->header
|
||||||
|| !single_exit (innerloop)
|
|| !single_exit (innerloop)
|
||||||
|
@ -2890,7 +2886,7 @@ vect_create_epilog_for_reduction (tree vect_def, gimple stmt,
|
||||||
gimple epilog_stmt = NULL;
|
gimple epilog_stmt = NULL;
|
||||||
tree new_scalar_dest, new_dest;
|
tree new_scalar_dest, new_dest;
|
||||||
gimple exit_phi;
|
gimple exit_phi;
|
||||||
tree bitsize, bitpos, bytesize;
|
tree bitsize, bitpos;
|
||||||
enum tree_code code = gimple_assign_rhs_code (stmt);
|
enum tree_code code = gimple_assign_rhs_code (stmt);
|
||||||
tree adjustment_def;
|
tree adjustment_def;
|
||||||
tree vec_initial_def, def;
|
tree vec_initial_def, def;
|
||||||
|
@ -3045,7 +3041,6 @@ vect_create_epilog_for_reduction (tree vect_def, gimple stmt,
|
||||||
scalar_type = TREE_TYPE (scalar_dest);
|
scalar_type = TREE_TYPE (scalar_dest);
|
||||||
new_scalar_dest = vect_create_destination_var (scalar_dest, NULL);
|
new_scalar_dest = vect_create_destination_var (scalar_dest, NULL);
|
||||||
bitsize = TYPE_SIZE (scalar_type);
|
bitsize = TYPE_SIZE (scalar_type);
|
||||||
bytesize = TYPE_SIZE_UNIT (scalar_type);
|
|
||||||
|
|
||||||
/* For MINUS_EXPR the initial vector is [init_val,0,...,0], therefore,
|
/* For MINUS_EXPR the initial vector is [init_val,0,...,0], therefore,
|
||||||
partial results are added and not subtracted. */
|
partial results are added and not subtracted. */
|
||||||
|
|
|
@ -456,7 +456,6 @@ vect_recog_widen_mult_pattern (gimple last_stmt,
|
||||||
static gimple
|
static gimple
|
||||||
vect_recog_pow_pattern (gimple last_stmt, tree *type_in, tree *type_out)
|
vect_recog_pow_pattern (gimple last_stmt, tree *type_in, tree *type_out)
|
||||||
{
|
{
|
||||||
tree type;
|
|
||||||
tree fn, base, exp = NULL;
|
tree fn, base, exp = NULL;
|
||||||
gimple stmt;
|
gimple stmt;
|
||||||
tree var;
|
tree var;
|
||||||
|
@ -464,8 +463,6 @@ vect_recog_pow_pattern (gimple last_stmt, tree *type_in, tree *type_out)
|
||||||
if (!is_gimple_call (last_stmt) || gimple_call_lhs (last_stmt) == NULL)
|
if (!is_gimple_call (last_stmt) || gimple_call_lhs (last_stmt) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
type = gimple_expr_type (last_stmt);
|
|
||||||
|
|
||||||
fn = gimple_call_fndecl (last_stmt);
|
fn = gimple_call_fndecl (last_stmt);
|
||||||
switch (DECL_FUNCTION_CODE (fn))
|
switch (DECL_FUNCTION_CODE (fn))
|
||||||
{
|
{
|
||||||
|
@ -812,7 +809,6 @@ vect_pattern_recog (loop_vec_info loop_vinfo)
|
||||||
basic_block *bbs = LOOP_VINFO_BBS (loop_vinfo);
|
basic_block *bbs = LOOP_VINFO_BBS (loop_vinfo);
|
||||||
unsigned int nbbs = loop->num_nodes;
|
unsigned int nbbs = loop->num_nodes;
|
||||||
gimple_stmt_iterator si;
|
gimple_stmt_iterator si;
|
||||||
gimple stmt;
|
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
gimple (* vect_recog_func_ptr) (gimple, tree *, tree *);
|
gimple (* vect_recog_func_ptr) (gimple, tree *, tree *);
|
||||||
|
|
||||||
|
@ -826,8 +822,6 @@ vect_pattern_recog (loop_vec_info loop_vinfo)
|
||||||
basic_block bb = bbs[i];
|
basic_block bb = bbs[i];
|
||||||
for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
|
for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
|
||||||
{
|
{
|
||||||
stmt = gsi_stmt (si);
|
|
||||||
|
|
||||||
/* Scan over all generic vect_recog_xxx_pattern functions. */
|
/* Scan over all generic vect_recog_xxx_pattern functions. */
|
||||||
for (j = 0; j < NUM_PATTERNS; j++)
|
for (j = 0; j < NUM_PATTERNS; j++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -879,7 +879,7 @@ vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
|
||||||
unsigned int unrolling_factor = 1, nunits;
|
unsigned int unrolling_factor = 1, nunits;
|
||||||
tree vectype, scalar_type;
|
tree vectype, scalar_type;
|
||||||
gimple next;
|
gimple next;
|
||||||
unsigned int vectorization_factor = 0, ncopies;
|
unsigned int vectorization_factor = 0;
|
||||||
int inside_cost = 0, outside_cost = 0, ncopies_for_cost;
|
int inside_cost = 0, outside_cost = 0, ncopies_for_cost;
|
||||||
unsigned int max_nunits = 0;
|
unsigned int max_nunits = 0;
|
||||||
VEC (int, heap) *load_permutation;
|
VEC (int, heap) *load_permutation;
|
||||||
|
@ -905,8 +905,6 @@ vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
|
||||||
/* No multitypes in BB SLP. */
|
/* No multitypes in BB SLP. */
|
||||||
vectorization_factor = nunits;
|
vectorization_factor = nunits;
|
||||||
|
|
||||||
ncopies = vectorization_factor / nunits;
|
|
||||||
|
|
||||||
/* Calculate the unrolling factor. */
|
/* Calculate the unrolling factor. */
|
||||||
unrolling_factor = least_common_multiple (nunits, group_size) / group_size;
|
unrolling_factor = least_common_multiple (nunits, group_size) / group_size;
|
||||||
if (unrolling_factor != 1 && !loop_vinfo)
|
if (unrolling_factor != 1 && !loop_vinfo)
|
||||||
|
@ -1639,13 +1637,11 @@ vect_create_mask_and_perm (gimple stmt, gimple next_scalar_stmt,
|
||||||
tree perm_dest;
|
tree perm_dest;
|
||||||
gimple perm_stmt = NULL;
|
gimple perm_stmt = NULL;
|
||||||
stmt_vec_info next_stmt_info;
|
stmt_vec_info next_stmt_info;
|
||||||
int i, group_size, stride, dr_chain_size;
|
int i, stride;
|
||||||
tree first_vec, second_vec, data_ref;
|
tree first_vec, second_vec, data_ref;
|
||||||
VEC (tree, heap) *params = NULL;
|
VEC (tree, heap) *params = NULL;
|
||||||
|
|
||||||
group_size = VEC_length (gimple, SLP_TREE_SCALAR_STMTS (node));
|
|
||||||
stride = SLP_TREE_NUMBER_OF_VEC_STMTS (node) / ncopies;
|
stride = SLP_TREE_NUMBER_OF_VEC_STMTS (node) / ncopies;
|
||||||
dr_chain_size = VEC_length (tree, dr_chain);
|
|
||||||
|
|
||||||
/* Initialize the vect stmts of NODE to properly insert the generated
|
/* Initialize the vect stmts of NODE to properly insert the generated
|
||||||
stmts later. */
|
stmts later. */
|
||||||
|
|
|
@ -1548,7 +1548,6 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi,
|
||||||
int nunits_out;
|
int nunits_out;
|
||||||
tree vectype_out, vectype_in;
|
tree vectype_out, vectype_in;
|
||||||
int ncopies, j;
|
int ncopies, j;
|
||||||
tree expr;
|
|
||||||
tree rhs_type, lhs_type;
|
tree rhs_type, lhs_type;
|
||||||
tree builtin_decl;
|
tree builtin_decl;
|
||||||
enum { NARROW, NONE, WIDEN } modifier;
|
enum { NARROW, NONE, WIDEN } modifier;
|
||||||
|
@ -1765,7 +1764,6 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Arguments are ready. Create the new vector stmt. */
|
/* Arguments are ready. Create the new vector stmt. */
|
||||||
expr = build2 (code1, vectype_out, vec_oprnd0, vec_oprnd1);
|
|
||||||
new_stmt = gimple_build_assign_with_ops (code1, vec_dest, vec_oprnd0,
|
new_stmt = gimple_build_assign_with_ops (code1, vec_dest, vec_oprnd0,
|
||||||
vec_oprnd1);
|
vec_oprnd1);
|
||||||
new_temp = make_ssa_name (vec_dest, new_stmt);
|
new_temp = make_ssa_name (vec_dest, new_stmt);
|
||||||
|
@ -1929,7 +1927,6 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi,
|
||||||
VEC(tree,heap) *vec_oprnds0 = NULL, *vec_oprnds1 = NULL;
|
VEC(tree,heap) *vec_oprnds0 = NULL, *vec_oprnds1 = NULL;
|
||||||
tree vop0, vop1;
|
tree vop0, vop1;
|
||||||
unsigned int k;
|
unsigned int k;
|
||||||
bool shift_p = false;
|
|
||||||
bool scalar_shift_arg = false;
|
bool scalar_shift_arg = false;
|
||||||
bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
|
bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
|
||||||
int vf;
|
int vf;
|
||||||
|
@ -2013,8 +2010,6 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi,
|
||||||
if (code == LSHIFT_EXPR || code == RSHIFT_EXPR || code == LROTATE_EXPR
|
if (code == LSHIFT_EXPR || code == RSHIFT_EXPR || code == LROTATE_EXPR
|
||||||
|| code == RROTATE_EXPR)
|
|| code == RROTATE_EXPR)
|
||||||
{
|
{
|
||||||
shift_p = true;
|
|
||||||
|
|
||||||
/* vector shifted by vector */
|
/* vector shifted by vector */
|
||||||
if (dt[1] == vect_internal_def)
|
if (dt[1] == vect_internal_def)
|
||||||
{
|
{
|
||||||
|
@ -2893,7 +2888,6 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
|
||||||
bool inv_p;
|
bool inv_p;
|
||||||
VEC(tree,heap) *vec_oprnds = NULL;
|
VEC(tree,heap) *vec_oprnds = NULL;
|
||||||
bool slp = (slp_node != NULL);
|
bool slp = (slp_node != NULL);
|
||||||
stmt_vec_info first_stmt_vinfo;
|
|
||||||
unsigned int vec_num;
|
unsigned int vec_num;
|
||||||
bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
|
bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
|
||||||
|
|
||||||
|
@ -3036,7 +3030,6 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
|
||||||
first_stmt = stmt;
|
first_stmt = stmt;
|
||||||
first_dr = dr;
|
first_dr = dr;
|
||||||
group_size = vec_num = 1;
|
group_size = vec_num = 1;
|
||||||
first_stmt_vinfo = stmt_info;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vect_print_dump_info (REPORT_DETAILS))
|
if (vect_print_dump_info (REPORT_DETAILS))
|
||||||
|
|
|
@ -3911,7 +3911,6 @@ register_new_assert_for (tree name, tree expr,
|
||||||
gimple_stmt_iterator si)
|
gimple_stmt_iterator si)
|
||||||
{
|
{
|
||||||
assert_locus_t n, loc, last_loc;
|
assert_locus_t n, loc, last_loc;
|
||||||
bool found;
|
|
||||||
basic_block dest_bb;
|
basic_block dest_bb;
|
||||||
|
|
||||||
#if defined ENABLE_CHECKING
|
#if defined ENABLE_CHECKING
|
||||||
|
@ -3960,7 +3959,6 @@ register_new_assert_for (tree name, tree expr,
|
||||||
COMP_CODE and VAL could be implemented. */
|
COMP_CODE and VAL could be implemented. */
|
||||||
loc = asserts_for[SSA_NAME_VERSION (name)];
|
loc = asserts_for[SSA_NAME_VERSION (name)];
|
||||||
last_loc = loc;
|
last_loc = loc;
|
||||||
found = false;
|
|
||||||
while (loc)
|
while (loc)
|
||||||
{
|
{
|
||||||
if (loc->comp_code == comp_code
|
if (loc->comp_code == comp_code
|
||||||
|
@ -5997,7 +5995,7 @@ vrp_visit_switch_stmt (gimple stmt, edge *taken_edge_p)
|
||||||
{
|
{
|
||||||
tree op, val;
|
tree op, val;
|
||||||
value_range_t *vr;
|
value_range_t *vr;
|
||||||
size_t i = 0, j = 0, n;
|
size_t i = 0, j = 0;
|
||||||
bool take_default;
|
bool take_default;
|
||||||
|
|
||||||
*taken_edge_p = NULL;
|
*taken_edge_p = NULL;
|
||||||
|
@ -6020,8 +6018,6 @@ vrp_visit_switch_stmt (gimple stmt, edge *taken_edge_p)
|
||||||
return SSA_PROP_VARYING;
|
return SSA_PROP_VARYING;
|
||||||
|
|
||||||
/* Find the single edge that is taken from the switch expression. */
|
/* Find the single edge that is taken from the switch expression. */
|
||||||
n = gimple_switch_num_labels (stmt);
|
|
||||||
|
|
||||||
take_default = !find_case_label_range (stmt, vr->min, vr->max, &i, &j);
|
take_default = !find_case_label_range (stmt, vr->min, vr->max, &i, &j);
|
||||||
|
|
||||||
/* Check if the range spans no CASE_LABEL. If so, we only reach the default
|
/* Check if the range spans no CASE_LABEL. If so, we only reach the default
|
||||||
|
|
|
@ -959,7 +959,7 @@ gimple_mod_subtract_transform (gimple_stmt_iterator *si)
|
||||||
histogram_value histogram;
|
histogram_value histogram;
|
||||||
enum tree_code code;
|
enum tree_code code;
|
||||||
gcov_type count, wrong_values, all;
|
gcov_type count, wrong_values, all;
|
||||||
tree lhs_type, result, value;
|
tree lhs_type, result;
|
||||||
gcov_type prob1, prob2;
|
gcov_type prob1, prob2;
|
||||||
unsigned int i, steps;
|
unsigned int i, steps;
|
||||||
gcov_type count1, count2;
|
gcov_type count1, count2;
|
||||||
|
@ -982,7 +982,6 @@ gimple_mod_subtract_transform (gimple_stmt_iterator *si)
|
||||||
if (!histogram)
|
if (!histogram)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
value = histogram->hvalue.value;
|
|
||||||
all = 0;
|
all = 0;
|
||||||
wrong_values = 0;
|
wrong_values = 0;
|
||||||
for (i = 0; i < histogram->hdata.intvl.steps; i++)
|
for (i = 0; i < histogram->hdata.intvl.steps; i++)
|
||||||
|
@ -1367,7 +1366,6 @@ gimple_stringops_transform (gimple_stmt_iterator *gsi)
|
||||||
enum built_in_function fcode;
|
enum built_in_function fcode;
|
||||||
histogram_value histogram;
|
histogram_value histogram;
|
||||||
gcov_type count, all, val;
|
gcov_type count, all, val;
|
||||||
tree value;
|
|
||||||
tree dest, src;
|
tree dest, src;
|
||||||
unsigned int dest_align, src_align;
|
unsigned int dest_align, src_align;
|
||||||
gcov_type prob;
|
gcov_type prob;
|
||||||
|
@ -1390,7 +1388,6 @@ gimple_stringops_transform (gimple_stmt_iterator *gsi)
|
||||||
histogram = gimple_histogram_value_of_type (cfun, stmt, HIST_TYPE_SINGLE_VALUE);
|
histogram = gimple_histogram_value_of_type (cfun, stmt, HIST_TYPE_SINGLE_VALUE);
|
||||||
if (!histogram)
|
if (!histogram)
|
||||||
return false;
|
return false;
|
||||||
value = histogram->hvalue.value;
|
|
||||||
val = histogram->hvalue.counters[0];
|
val = histogram->hvalue.counters[0];
|
||||||
count = histogram->hvalue.counters[1];
|
count = histogram->hvalue.counters[1];
|
||||||
all = histogram->hvalue.counters[2];
|
all = histogram->hvalue.counters[2];
|
||||||
|
@ -1593,7 +1590,6 @@ gimple_stringops_values_to_profile (gimple stmt, histogram_values *values)
|
||||||
tree fndecl;
|
tree fndecl;
|
||||||
tree blck_size;
|
tree blck_size;
|
||||||
tree dest;
|
tree dest;
|
||||||
enum built_in_function fcode;
|
|
||||||
int size_arg;
|
int size_arg;
|
||||||
|
|
||||||
if (gimple_code (stmt) != GIMPLE_CALL)
|
if (gimple_code (stmt) != GIMPLE_CALL)
|
||||||
|
@ -1601,7 +1597,6 @@ gimple_stringops_values_to_profile (gimple stmt, histogram_values *values)
|
||||||
fndecl = gimple_call_fndecl (stmt);
|
fndecl = gimple_call_fndecl (stmt);
|
||||||
if (!fndecl)
|
if (!fndecl)
|
||||||
return;
|
return;
|
||||||
fcode = DECL_FUNCTION_CODE (fndecl);
|
|
||||||
|
|
||||||
if (!interesting_stringop_to_profile_p (fndecl, stmt, &size_arg))
|
if (!interesting_stringop_to_profile_p (fndecl, stmt, &size_arg))
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Reference in a new issue