+2019-06-27 Martin Liska <mliska@suse.cz>
+
+ * asan.c (asan_emit_allocas_unpoison): Remove obviously
+ dead assignments.
+ * bt-load.c (move_btr_def): Likewise.
+ * builtins.c (expand_builtin_apply_args_1): Likewise.
+ (expand_builtin_apply): Likewise.
+ * cfgexpand.c (expand_asm_stmt): Likewise.
+ (construct_init_block): Likewise.
+ * cfghooks.c (verify_flow_info): Likewise.
+ * cfgloopmanip.c (remove_path): Likewise.
+ * cfgrtl.c (rtl_verify_bb_layout): Likewise.
+ * cgraph.c (cgraph_node::set_pure_flag): Likewise.
+ * combine.c (simplify_if_then_else): Likewise.
+ * config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise.
+ (choose_basereg): Likewise.
+ (ix86_expand_prologue): Likewise.
+ (ix86_preferred_output_reload_class): Likewise.
+ * cselib.c (cselib_record_sets): Likewise.
+ * df-scan.c (df_scan_alloc): Likewise.
+ * dojump.c (do_jump_by_parts_greater_rtx): Likewise.
+ * early-remat.c (early_remat::record_equiv_candidates): Likewise.
+ * emit-rtl.c (try_split): Likewise.
+ * graphite-scop-detection.c (assign_parameter_index_in_region): Likewise.
+ * ipa-cp.c (cgraph_edge_brings_all_agg_vals_for_node): Likewise.
+ * ira-color.c (setup_profitable_hard_regs): Likewise.
+ * ira.c (rtx_moveable_p): Likewise.
+ * lra-eliminations.c (eliminate_regs_in_insn): Likewise.
+ * read-rtl.c (read_subst_mapping): Likewise.
+ * regrename.c (scan_rtx): Likewise.
+ * reorg.c (fill_slots_from_thread): Likewise.
+ * tree-inline.c (tree_function_versioning): Likewise.
+ * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
+ * tree-ssa-sink.c (statement_sink_location): Likewise.
+ * tree-ssa-threadedge.c (thread_across_edge): Likewise.
+ * tree-vect-loop.c (vect_get_loop_niters): Likewise.
+ (vect_create_epilog_for_reduction): Likewise.
+ * tree.c (build_nonstandard_integer_type): Likewise.
+
2019-06-27 Richard Biener <rguenther@suse.de>
* tree-ssa-sccvn.c (vn_reference_lookup_3): Encode valueized RHS.
rtx ret = init_one_libfunc ("__asan_allocas_unpoison");
top = convert_memory_address (ptr_mode, top);
bot = convert_memory_address (ptr_mode, bot);
- ret = emit_library_call_value (ret, NULL_RTX, LCT_NORMAL, ptr_mode,
- top, ptr_mode, bot, ptr_mode);
+ emit_library_call (ret, LCT_NORMAL, ptr_mode,
+ top, ptr_mode, bot, ptr_mode);
do_pending_stack_adjust ();
rtx_insn *insns = get_insns ();
if (def->other_btr_uses_before_def)
{
- insp = BB_END (b);
for (insp = BB_END (b); ! INSN_P (insp); insp = PREV_INSN (insp))
gcc_assert (insp != BB_HEAD (b));
/* Save the structure value address unless this is passed as an
"invisible" first argument. */
if (struct_incoming_value)
- {
- emit_move_insn (adjust_address (registers, Pmode, size),
- copy_to_reg (struct_incoming_value));
- size += GET_MODE_SIZE (Pmode);
- }
+ emit_move_insn (adjust_address (registers, Pmode, size),
+ copy_to_reg (struct_incoming_value));
/* Return the address of the block. */
return copy_addr_to_reg (XEXP (registers, 0));
emit_move_insn (struct_value, value);
if (REG_P (struct_value))
use_reg (&call_fusage, struct_value);
- size += GET_MODE_SIZE (Pmode);
}
/* All arguments and registers used for the call are set up by now! */
}
}
}
- unsigned nclobbers = clobber_rvec.length();
/* First pass over inputs and outputs checks validity and sets
mark_addressable if needed. */
gcc_assert (constraints.length() == noutputs + ninputs);
/* But it certainly can adjust the clobbers. */
- nclobbers = clobber_rvec.length();
+ unsigned nclobbers = clobber_rvec.length ();
/* Third pass checks for easy conflicts. */
/* ??? Why are we doing this on trees instead of rtx. */
{
first_block = e->dest;
redirect_edge_succ (e, init_block);
- e = make_single_succ_edge (init_block, first_block, flags);
+ make_single_succ_edge (init_block, first_block, flags);
}
else
- e = make_single_succ_edge (init_block, EXIT_BLOCK_PTR_FOR_FN (cfun),
- EDGE_FALLTHRU);
+ make_single_succ_edge (init_block, EXIT_BLOCK_PTR_FOR_FN (cfun),
+ EDGE_FALLTHRU);
update_bb_for_insn (init_block);
return init_block;
err = 1;
}
- last_bb_seen = ENTRY_BLOCK_PTR_FOR_FN (cfun);
-
/* Clean up. */
free (last_visited);
free (edge_checksum);
for (i = 0; i < nrem; i++)
{
- bb = rem_bbs[i];
FOR_EACH_EDGE (ae, ei, rem_bbs[i]->succs)
if (ae->dest != EXIT_BLOCK_PTR_FOR_FN (cfun)
&& !bitmap_bit_p (seen, ae->dest->index))
basic_block last_bb_seen = ENTRY_BLOCK_PTR_FOR_FN (cfun), curr_bb = NULL;
num_bb_notes = 0;
- last_bb_seen = ENTRY_BLOCK_PTR_FOR_FN (cfun);
for (x = rtx_first; x; x = NEXT_INSN (x))
{
cgraph_node::set_pure_flag (bool pure, bool looping)
{
struct set_pure_flag_info info = {pure, looping, false};
- if (!pure)
- looping = false;
call_for_symbol_thunks_and_aliases (set_pure_flag_1, &info, !pure, true);
return info.changed;
}
|| reg_mentioned_p (true_rtx, false_rtx)
|| rtx_equal_p (false_rtx, XEXP (cond, 0))))
{
- true_code = reversed_comparison_code (cond, NULL);
SUBST (XEXP (x, 0), reversed_comparison (cond, GET_MODE (cond)));
SUBST (XEXP (x, 1), false_rtx);
SUBST (XEXP (x, 2), true_rtx);
CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
CUMULATIVE_ARGS next_cum;
tree fntype;
- int max;
gcc_assert (!no_rtl);
if (stdarg_p (fntype))
ix86_function_arg_advance (pack_cumulative_args (&next_cum), mode, type,
true);
-
- max = cum->regno + cfun->va_list_gpr_size / UNITS_PER_WORD;
- if (max > X86_64_REGPARM_MAX)
- max = X86_64_REGPARM_MAX;
}
{
base_reg = hard_frame_pointer_rtx;
base_offset = toffset;
- len = tlen;
}
}
}
GEN_INT (-allocate), -1, false);
/* Align the stack. */
- insn = emit_insn (gen_and2_insn (stack_pointer_rtx,
- GEN_INT (-align_bytes)));
+ emit_insn (gen_and2_insn (stack_pointer_rtx, GEN_INT (-align_bytes)));
m->fs.sp_offset = ROUND_UP (m->fs.sp_offset, align_bytes);
m->fs.sp_realigned_offset = m->fs.sp_offset
- frame.stack_realign_allocate;
static reg_class_t
ix86_preferred_output_reload_class (rtx x, reg_class_t regclass)
{
- machine_mode mode = GET_MODE (x);
-
/* Restrict the output reload class to the register bank that we are doing
math on. If we would like not to return a subset of CLASS, reject this
alternative: if reload cannot do this, it will still use its choice. */
- mode = GET_MODE (x);
+ machine_mode mode = GET_MODE (x);
if (SSE_FLOAT_MODE_P (mode) && TARGET_SSE_MATH)
return MAYBE_SSE_CLASS_P (regclass) ? ALL_SSE_REGS : NO_REGS;
+2019-06-27 Martin Liska <mliska@suse.cz>
+
+ * class.c (adjust_clone_args): Remove obviously
+ dead assignments.
+ (dump_class_hierarchy_r): Likewise.
+ * decl.c (check_initializer): Likewise.
+ * parser.c (cp_parser_lambda_expression): Likewise.
+ * pt.c (unify_bound_ttp_args): Likewise.
+ (convert_template_argument): Likewise.
+ * rtti.c (build_headof): Likewise.
+ * typeck.c (convert_for_initialization): Likewise.
+
2019-06-25 Jason Merrill <jason@redhat.com>
PR c++/70462 - unnecessary base ctor variant with final.
tree orig_decl_parms = TYPE_ARG_TYPES (TREE_TYPE (decl));
tree decl_parms, clone_parms;
- clone_parms = orig_clone_parms;
-
/* Skip the 'this' parameter. */
orig_clone_parms = TREE_CHAIN (orig_clone_parms);
orig_decl_parms = TREE_CHAIN (orig_decl_parms);
tree base_binfo;
int i;
- indented = maybe_indent_hierarchy (stream, indent, 0);
fprintf (stream, "%s (0x" HOST_WIDE_INT_PRINT_HEX ") ",
type_as_string (BINFO_TYPE (binfo), TFF_PLAIN_IDENTIFIER),
(HOST_WIDE_INT) (uintptr_t) binfo);
fprintf (stream, " virtual");
fprintf (stream, "\n");
- indented = 0;
if (BINFO_PRIMARY_P (binfo))
{
indented = maybe_indent_hierarchy (stream, indent + 3, indented);
static tree
check_initializer (tree decl, tree init, int flags, vec<tree, va_gc> **cleanups)
{
- tree type = TREE_TYPE (decl);
+ tree type;
tree init_code = NULL;
tree core_type;
if (ok)
maybe_add_lambda_conv_op (type);
- type = finish_struct (type, /*attributes=*/NULL_TREE);
+ finish_struct (type, /*attributes=*/NULL_TREE);
parser->num_template_parameter_lists = saved_num_template_parameter_lists;
parser->in_statement = in_statement;
{
/* In keeping with P0522R0, adjust P's template arguments
to apply to A's template; then flatten it again. */
- tree nparmvec = parmvec;
- nparmvec = coerce_ttp_args_for_tta (arg, parmvec, tf_none);
+ tree nparmvec = coerce_ttp_args_for_tta (arg, parmvec, tf_none);
nparmvec = expand_template_argument_pack (nparmvec);
if (unify (tparms, targs, nparmvec, argvec,
invalid, but static members are OK. In any
case, grab the underlying fields/functions
and issue an error later if required. */
- orig_arg = TREE_VALUE (arg);
TREE_TYPE (arg) = unknown_type_node;
}
offset = build_vtbl_ref (cp_build_fold_indirect_ref (exp),
index);
- type = cp_build_qualified_type (ptr_type_node,
- cp_type_quals (TREE_TYPE (exp)));
+ cp_build_qualified_type (ptr_type_node,
+ cp_type_quals (TREE_TYPE (exp)));
return fold_build_pointer_plus (exp, offset);
}
if (exp == error_mark_node)
return error_mark_node;
- rhstype = non_reference (rhstype);
-
type = complete_type (type);
if (DIRECT_INIT_EXPR_P (type, rhs))
int n_sets = 0;
int i;
struct cselib_set sets[MAX_SETS];
- rtx body = PATTERN (insn);
rtx cond = 0;
int n_sets_before_autoinc;
int n_strict_low_parts = 0;
struct cselib_record_autoinc_data data;
- body = PATTERN (insn);
+ rtx body = PATTERN (insn);
if (GET_CODE (body) == COND_EXEC)
{
cond = COND_EXEC_TEST (body);
df_scan_alloc (bitmap all_blocks ATTRIBUTE_UNUSED)
{
struct df_scan_problem_data *problem_data;
- unsigned int insn_num = get_max_uid () + 1;
basic_block bb;
/* Given the number of pools, this is really faster than tearing
bitmap_obstack_initialize (&problem_data->reg_bitmaps);
bitmap_obstack_initialize (&problem_data->insn_bitmaps);
- insn_num += insn_num / 4;
df_grow_reg_info ();
df_grow_insn_info ();
code = LE;
if_true_label = if_false_label;
if_false_label = drop_through_label;
- drop_through_if_true = false;
- drop_through_if_false = true;
prob = prob.invert ();
}
ec->representative = cand1_index;
cand1->equiv_class = ec;
}
- cand1 = &m_candidates[ec->representative];
cand2->equiv_class = ec;
bitmap_set_bit (ec->members, cand2_index);
if (cand2_index > ec->representative)
before = PREV_INSN (trial);
after = NEXT_INSN (trial);
- tem = emit_insn_after_setloc (seq, trial, INSN_LOCATION (trial));
+ emit_insn_after_setloc (seq, trial, INSN_LOCATION (trial));
delete_insn (trial);
gcc_assert (TREE_CODE (name) == SSA_NAME
&& INTEGRAL_TYPE_P (TREE_TYPE (name))
&& ! defined_in_sese_p (name, region->region));
-
int i;
tree p;
FOR_EACH_VEC_ELT (region->params, i, p)
if (p == name)
return;
- i = region->params.length ();
region->params.safe_push (name);
}
cgraph_edge_brings_all_agg_vals_for_node (struct cgraph_edge *cs,
struct cgraph_node *node)
{
- struct ipa_node_params *orig_caller_info = IPA_NODE_REF (cs->caller);
struct ipa_node_params *orig_node_info;
struct ipa_agg_replacement_value *aggval;
int i, ec, count;
return false;
orig_node_info = IPA_NODE_REF (IPA_NODE_REF (node)->ipcp_orig_node);
- if (orig_caller_info->ipcp_orig_node)
- orig_caller_info = IPA_NODE_REF (orig_caller_info->ipcp_orig_node);
for (i = 0; i < count; i++)
{
|| empty_profitable_hard_regs (a))
continue;
data = ALLOCNO_COLOR_DATA (a);
- mode = ALLOCNO_MODE (a);
if ((costs = ALLOCNO_UPDATED_HARD_REG_COSTS (a)) != NULL
|| (costs = ALLOCNO_HARD_REG_COSTS (a)) != NULL)
{
{
const char *fmt;
rtx x = *loc;
- enum rtx_code code = GET_CODE (x);
int i, j;
- code = GET_CODE (x);
+ enum rtx_code code = GET_CODE (x);
switch (code)
{
case CONST:
single_set without having put new body into the insn and the
re-recognition won't hurt in this rare case. */
id = lra_update_insn_recog_data (insn);
- static_id = id->insn_static_data;
}
/* Spill pseudos which are assigned to hard registers in SET. Add
m = add_mapping (&substs, subst_iters_table, attr_operands[1]);
end_ptr = &m->values;
end_ptr = add_map_value (end_ptr, 1, "");
- end_ptr = add_map_value (end_ptr, 2, "");
+ add_map_value (end_ptr, 2, "");
add_define_attr_for_define_subst (attr_operands[1], queue);
}
m = add_mapping (&substs, subst_attrs_table, attr_operands[0]);
end_ptr = &m->values;
end_ptr = add_map_value (end_ptr, 1, attr_operands[2]);
- end_ptr = add_map_value (end_ptr, 2, attr_operands[3]);
+ add_map_value (end_ptr, 2, attr_operands[3]);
}
/* Check newly-created code iterator ITERATOR to see whether every code has the
{
const char *fmt;
rtx x = *loc;
- enum rtx_code code = GET_CODE (x);
int i, j;
- code = GET_CODE (x);
+ enum rtx_code code = GET_CODE (x);
switch (code)
{
case CONST:
&& GET_CODE (PATTERN (new_thread)) != ASM_INPUT
&& asm_noperands (PATTERN (new_thread)) < 0)
{
- rtx pat = PATTERN (new_thread);
rtx dest;
rtx src;
/* We know "new_thread" is an insn due to NONJUMP_INSN_P (new_thread)
above. */
trial = as_a <rtx_insn *> (new_thread);
- pat = PATTERN (trial);
+ rtx pat = PATTERN (trial);
if (!NONJUMP_INSN_P (trial)
|| GET_CODE (pat) != SET
in the debug info that var (whole DECL_ORIGIN is the parm
PARM_DECL) is optimized away, but could be looked up at the
call site as value of D#X there. */
- tree var = vars, vexpr;
+ tree vexpr;
gimple_stmt_iterator cgsi
= gsi_after_labels (single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun)));
gimple *def_temp;
- var = vars;
+ tree var = vars;
i = vec_safe_length (*debug_args);
do
{
i++;
}
- length = ops->length ();
- oelast = ops->last ();
-
if (iterate)
optimize_ops_list (opcode, ops);
}
if (gimple_code (use) != GIMPLE_PHI)
{
- sinkbb = gimple_bb (use);
sinkbb = select_best_block (frombb, gimple_bb (use), stmt);
if (sinkbb == frombb)
x = new jump_thread_edge (taken_edge, EDGE_COPY_SRC_JOINER_BLOCK);
path->safe_push (x);
- found = false;
found = thread_around_empty_blocks (taken_edge,
dummy_cond,
avail_exprs_stack,
if (!exit)
return cond;
- niter = chrec_dont_know;
may_be_zero = NULL_TREE;
- niter_assumptions = boolean_true_node;
if (!number_of_iterations_exit_assumptions (loop, exit, &niter_desc, NULL)
|| chrec_contains_undetermined (niter_desc.niter))
return cond;
if (off != 0)
{
tree new_idx_val = idx_val;
- tree new_val = val;
if (off != v_size - el_size)
{
new_idx_val = make_ssa_name (idx_eltype);
old_idx_val);
gsi_insert_before (&exit_gsi, epilog_stmt, GSI_SAME_STMT);
}
- new_val = make_ssa_name (data_eltype);
+ tree new_val = make_ssa_name (data_eltype);
epilog_stmt = gimple_build_assign (new_val,
COND_EXPR,
build2 (GT_EXPR,
in a vector mode of smaller size and first reduce upper/lower
halves against each other. */
enum machine_mode mode1 = mode;
- tree vectype1 = vectype;
unsigned sz = tree_to_uhwi (TYPE_SIZE_UNIT (vectype));
unsigned sz1 = sz;
if (!slp_reduc
&& (mode1 = targetm.vectorize.split_reduction (mode)) != mode)
sz1 = GET_MODE_SIZE (mode1).to_constant ();
- vectype1 = get_vectype_for_scalar_type_and_size (scalar_type, sz1);
+ tree vectype1 = get_vectype_for_scalar_type_and_size (scalar_type, sz1);
reduce_with_shift = have_whole_vector_shift (mode1);
if (!VECTOR_MODE_P (mode1))
reduce_with_shift = false;
else
fixup_signed_type (itype);
- ret = itype;
-
inchash::hash hstate;
inchash::add_expr (TYPE_MAX_VALUE (itype), hstate);
ret = type_hash_canon (hstate.end (), itype);
+2019-06-27 Martin Liska <mliska@suse.cz>
+
+ * libgcov-driver-system.c (gcov_exit_open_gcda_file): Remove obviously
+ dead assignments.
+ * libgcov-util.c: Likewise.
+
2019-06-27 Martin Liska <mliska@suse.cz>
* libgcov-util.c (gcov_profile_merge): Release allocated
gcov_exit_open_gcda_file (struct gcov_info *gi_ptr,
struct gcov_filename *gf)
{
- const char *fname = gi_ptr->filename;
int append_slash = 0;
-
- fname = gi_ptr->filename;
+ const char *fname = gi_ptr->filename;
/* Build relocated filename, stripping off leading
directories from the initial filename if requested. */
#ifdef HAVE_FTW_H
ftw (".", ftw_read_file, 50);
#endif
- ret = chdir (pwd);
+ chdir (pwd);
free (pwd);
-
return gcov_info_head;;
}