resource.c (mark_referenced_resources): Change include_delayed_effects parameter to bool.
* resource.c (mark_referenced_resources): Change include_delayed_effects parameter to bool. Change all callers. (mark_end_of_function_resources): Likewise. * reorg.c (insn_references_resource_p): Likewise. (insn_sets_resource_p): Likewise. * resource.h (mark_referenced_resources): Update declaration. (mark_end_of_function_resources): Update declaration. From-SVN: r148547
This commit is contained in:
parent
a322799deb
commit
675f99c97f
|
@ -1,3 +1,13 @@
|
|||
2009-06-16 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* resource.c (mark_referenced_resources): Change
|
||||
include_delayed_effects parameter to bool. Change all callers.
|
||||
(mark_end_of_function_resources): Likewise.
|
||||
* reorg.c (insn_references_resource_p): Likewise.
|
||||
(insn_sets_resource_p): Likewise.
|
||||
* resource.h (mark_referenced_resources): Update declaration.
|
||||
(mark_end_of_function_resources): Update declaration.
|
||||
|
||||
2009-06-16 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
|
||||
|
|
119
gcc/reorg.c
119
gcc/reorg.c
|
@ -173,8 +173,8 @@ static int max_uid;
|
|||
|
||||
static int stop_search_p (rtx, int);
|
||||
static int resource_conflicts_p (struct resources *, struct resources *);
|
||||
static int insn_references_resource_p (rtx, struct resources *, int);
|
||||
static int insn_sets_resource_p (rtx, struct resources *, int);
|
||||
static int insn_references_resource_p (rtx, struct resources *, bool);
|
||||
static int insn_sets_resource_p (rtx, struct resources *, bool);
|
||||
static rtx find_end_label (void);
|
||||
static rtx emit_delay_sequence (rtx, rtx, int);
|
||||
static rtx add_to_delay_list (rtx, rtx);
|
||||
|
@ -297,7 +297,7 @@ resource_conflicts_p (struct resources *res1, struct resources *res2)
|
|||
|
||||
static int
|
||||
insn_references_resource_p (rtx insn, struct resources *res,
|
||||
int include_delayed_effects)
|
||||
bool include_delayed_effects)
|
||||
{
|
||||
struct resources insn_res;
|
||||
|
||||
|
@ -313,7 +313,7 @@ insn_references_resource_p (rtx insn, struct resources *res,
|
|||
|
||||
static int
|
||||
insn_sets_resource_p (rtx insn, struct resources *res,
|
||||
int include_delayed_effects)
|
||||
bool include_delayed_effects)
|
||||
{
|
||||
struct resources insn_sets;
|
||||
|
||||
|
@ -1246,7 +1246,7 @@ steal_delay_list_from_target (rtx insn, rtx condition, rtx seq,
|
|||
rtx trial = XEXP (temp, 0);
|
||||
|
||||
mark_set_resources (trial, &cc_set, 0, MARK_SRC_DEST_CALL);
|
||||
if (insn_references_resource_p (XVECEXP (seq , 0, 0), &cc_set, 0))
|
||||
if (insn_references_resource_p (XVECEXP (seq , 0, 0), &cc_set, false))
|
||||
return delay_list;
|
||||
}
|
||||
|
||||
|
@ -1268,9 +1268,9 @@ steal_delay_list_from_target (rtx insn, rtx condition, rtx seq,
|
|||
rtx trial = XVECEXP (seq, 0, i);
|
||||
int flags;
|
||||
|
||||
if (insn_references_resource_p (trial, sets, 0)
|
||||
|| insn_sets_resource_p (trial, needed, 0)
|
||||
|| insn_sets_resource_p (trial, sets, 0)
|
||||
if (insn_references_resource_p (trial, sets, false)
|
||||
|| insn_sets_resource_p (trial, needed, false)
|
||||
|| insn_sets_resource_p (trial, sets, false)
|
||||
#ifdef HAVE_cc0
|
||||
/* If TRIAL sets CC0, we can't copy it, so we can't steal this
|
||||
delay list. */
|
||||
|
@ -1293,7 +1293,7 @@ steal_delay_list_from_target (rtx insn, rtx condition, rtx seq,
|
|||
|
||||
if (! must_annul
|
||||
&& ((condition == const_true_rtx
|
||||
|| (! insn_sets_resource_p (trial, other_needed, 0)
|
||||
|| (! insn_sets_resource_p (trial, other_needed, false)
|
||||
&& ! may_trap_or_fault_p (PATTERN (trial)))))
|
||||
? eligible_for_delay (insn, total_slots_filled, trial, flags)
|
||||
: (must_annul || (delay_list == NULL && new_delay_list == NULL))
|
||||
|
@ -1368,9 +1368,9 @@ steal_delay_list_from_fallthrough (rtx insn, rtx condition, rtx seq,
|
|||
|
||||
/* If TRIAL sets CC0, stealing it will move it too far from the use
|
||||
of CC0. */
|
||||
if (insn_references_resource_p (trial, sets, 0)
|
||||
|| insn_sets_resource_p (trial, needed, 0)
|
||||
|| insn_sets_resource_p (trial, sets, 0)
|
||||
if (insn_references_resource_p (trial, sets, false)
|
||||
|| insn_sets_resource_p (trial, needed, false)
|
||||
|| insn_sets_resource_p (trial, sets, false)
|
||||
#ifdef HAVE_cc0
|
||||
|| sets_cc0_p (PATTERN (trial))
|
||||
#endif
|
||||
|
@ -1387,7 +1387,7 @@ steal_delay_list_from_fallthrough (rtx insn, rtx condition, rtx seq,
|
|||
|
||||
if (! must_annul
|
||||
&& ((condition == const_true_rtx
|
||||
|| (! insn_sets_resource_p (trial, other_needed, 0)
|
||||
|| (! insn_sets_resource_p (trial, other_needed, false)
|
||||
&& ! may_trap_or_fault_p (PATTERN (trial)))))
|
||||
? eligible_for_delay (insn, *pslots_filled, trial, flags)
|
||||
: (must_annul || delay_list == NULL) && (must_annul = 1,
|
||||
|
@ -1448,7 +1448,8 @@ try_merge_delay_insns (rtx insn, rtx thread)
|
|||
if (! annul_p)
|
||||
for (i = 1 ; i < num_slots; i++)
|
||||
if (XVECEXP (PATTERN (insn), 0, i))
|
||||
mark_referenced_resources (XVECEXP (PATTERN (insn), 0, i), &needed, 1);
|
||||
mark_referenced_resources (XVECEXP (PATTERN (insn), 0, i), &needed,
|
||||
true);
|
||||
|
||||
for (trial = thread; !stop_search_p (trial, 1); trial = next_trial)
|
||||
{
|
||||
|
@ -1467,9 +1468,9 @@ try_merge_delay_insns (rtx insn, rtx thread)
|
|||
/* We can't share an insn that sets cc0. */
|
||||
&& ! sets_cc0_p (pat)
|
||||
#endif
|
||||
&& ! insn_references_resource_p (trial, &set, 1)
|
||||
&& ! insn_sets_resource_p (trial, &set, 1)
|
||||
&& ! insn_sets_resource_p (trial, &needed, 1)
|
||||
&& ! insn_references_resource_p (trial, &set, true)
|
||||
&& ! insn_sets_resource_p (trial, &set, true)
|
||||
&& ! insn_sets_resource_p (trial, &needed, true)
|
||||
&& (trial = try_split (pat, trial, 0)) != 0
|
||||
/* Update next_trial, in case try_split succeeded. */
|
||||
&& (next_trial = next_nonnote_insn (trial))
|
||||
|
@ -1500,7 +1501,7 @@ try_merge_delay_insns (rtx insn, rtx thread)
|
|||
}
|
||||
|
||||
mark_set_resources (trial, &set, 0, MARK_SRC_DEST_CALL);
|
||||
mark_referenced_resources (trial, &needed, 1);
|
||||
mark_referenced_resources (trial, &needed, true);
|
||||
}
|
||||
|
||||
/* See if we stopped on a filled insn. If we did, try to see if its
|
||||
|
@ -1515,15 +1516,15 @@ try_merge_delay_insns (rtx insn, rtx thread)
|
|||
|
||||
/* Account for resources set/needed by the filled insn. */
|
||||
mark_set_resources (filled_insn, &set, 0, MARK_SRC_DEST_CALL);
|
||||
mark_referenced_resources (filled_insn, &needed, 1);
|
||||
mark_referenced_resources (filled_insn, &needed, true);
|
||||
|
||||
for (i = 1; i < XVECLEN (pat, 0); i++)
|
||||
{
|
||||
rtx dtrial = XVECEXP (pat, 0, i);
|
||||
|
||||
if (! insn_references_resource_p (dtrial, &set, 1)
|
||||
&& ! insn_sets_resource_p (dtrial, &set, 1)
|
||||
&& ! insn_sets_resource_p (dtrial, &needed, 1)
|
||||
if (! insn_references_resource_p (dtrial, &set, true)
|
||||
&& ! insn_sets_resource_p (dtrial, &set, true)
|
||||
&& ! insn_sets_resource_p (dtrial, &needed, true)
|
||||
#ifdef HAVE_cc0
|
||||
&& ! sets_cc0_p (PATTERN (dtrial))
|
||||
#endif
|
||||
|
@ -1554,7 +1555,7 @@ try_merge_delay_insns (rtx insn, rtx thread)
|
|||
/* Keep track of the set/referenced resources for the delay
|
||||
slots of any trial insns we encounter. */
|
||||
mark_set_resources (dtrial, &set, 0, MARK_SRC_DEST_CALL);
|
||||
mark_referenced_resources (dtrial, &needed, 1);
|
||||
mark_referenced_resources (dtrial, &needed, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1690,7 +1691,7 @@ redundant_insn (rtx insn, rtx target, rtx delay_list)
|
|||
CLEAR_RESOURCE (&needed);
|
||||
CLEAR_RESOURCE (&set);
|
||||
mark_set_resources (insn, &set, 0, MARK_SRC_DEST_CALL);
|
||||
mark_referenced_resources (insn, &needed, 1);
|
||||
mark_referenced_resources (insn, &needed, true);
|
||||
|
||||
/* If TARGET is a SEQUENCE, get the main insn. */
|
||||
if (NONJUMP_INSN_P (target) && GET_CODE (PATTERN (target)) == SEQUENCE)
|
||||
|
@ -1702,8 +1703,8 @@ redundant_insn (rtx insn, rtx target, rtx delay_list)
|
|||
#endif
|
||||
/* The insn requiring the delay may not set anything needed or set by
|
||||
INSN. */
|
||||
|| insn_sets_resource_p (target_main, &needed, 1)
|
||||
|| insn_sets_resource_p (target_main, &set, 1))
|
||||
|| insn_sets_resource_p (target_main, &needed, true)
|
||||
|| insn_sets_resource_p (target_main, &set, true))
|
||||
return 0;
|
||||
|
||||
/* Insns we pass may not set either NEEDED or SET, so merge them for
|
||||
|
@ -1717,14 +1718,15 @@ redundant_insn (rtx insn, rtx target, rtx delay_list)
|
|||
|
||||
while (delay_list)
|
||||
{
|
||||
if (insn_sets_resource_p (XEXP (delay_list, 0), &needed, 1))
|
||||
if (insn_sets_resource_p (XEXP (delay_list, 0), &needed, true))
|
||||
return 0;
|
||||
delay_list = XEXP (delay_list, 1);
|
||||
}
|
||||
|
||||
if (NONJUMP_INSN_P (target) && GET_CODE (PATTERN (target)) == SEQUENCE)
|
||||
for (i = 1; i < XVECLEN (PATTERN (target), 0); i++)
|
||||
if (insn_sets_resource_p (XVECEXP (PATTERN (target), 0, i), &needed, 1))
|
||||
if (insn_sets_resource_p (XVECEXP (PATTERN (target), 0, i), &needed,
|
||||
true))
|
||||
return 0;
|
||||
|
||||
/* Scan backwards until we reach a label or an insn that uses something
|
||||
|
@ -1783,13 +1785,13 @@ redundant_insn (rtx insn, rtx target, rtx delay_list)
|
|||
we must stop if it sets anything needed or set by INSN. */
|
||||
if ((! INSN_ANNULLED_BRANCH_P (XVECEXP (pat, 0, 0))
|
||||
|| ! INSN_FROM_TARGET_P (candidate))
|
||||
&& insn_sets_resource_p (candidate, &needed, 1))
|
||||
&& insn_sets_resource_p (candidate, &needed, true))
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* If the insn requiring the delay slot conflicts with INSN, we
|
||||
must stop. */
|
||||
if (insn_sets_resource_p (XVECEXP (pat, 0, 0), &needed, 1))
|
||||
if (insn_sets_resource_p (XVECEXP (pat, 0, 0), &needed, true))
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
|
@ -1800,7 +1802,7 @@ redundant_insn (rtx insn, rtx target, rtx delay_list)
|
|||
return trial;
|
||||
|
||||
/* Can't go any further if TRIAL conflicts with INSN. */
|
||||
if (insn_sets_resource_p (trial, &needed, 1))
|
||||
if (insn_sets_resource_p (trial, &needed, true))
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -2138,7 +2140,7 @@ fill_simple_delay_slots (int non_jumps_p)
|
|||
CLEAR_RESOURCE (&needed);
|
||||
CLEAR_RESOURCE (&set);
|
||||
mark_set_resources (insn, &set, 0, MARK_SRC_DEST);
|
||||
mark_referenced_resources (insn, &needed, 0);
|
||||
mark_referenced_resources (insn, &needed, false);
|
||||
|
||||
for (trial = prev_nonnote_insn (insn); ! stop_search_p (trial, 1);
|
||||
trial = next_trial)
|
||||
|
@ -2154,9 +2156,9 @@ fill_simple_delay_slots (int non_jumps_p)
|
|||
|
||||
/* Check for resource conflict first, to avoid unnecessary
|
||||
splitting. */
|
||||
if (! insn_references_resource_p (trial, &set, 1)
|
||||
&& ! insn_sets_resource_p (trial, &set, 1)
|
||||
&& ! insn_sets_resource_p (trial, &needed, 1)
|
||||
if (! insn_references_resource_p (trial, &set, true)
|
||||
&& ! insn_sets_resource_p (trial, &set, true)
|
||||
&& ! insn_sets_resource_p (trial, &needed, true)
|
||||
#ifdef HAVE_cc0
|
||||
/* Can't separate set of cc0 from its use. */
|
||||
&& ! (reg_mentioned_p (cc0_rtx, pat) && ! sets_cc0_p (pat))
|
||||
|
@ -2184,7 +2186,7 @@ fill_simple_delay_slots (int non_jumps_p)
|
|||
}
|
||||
|
||||
mark_set_resources (trial, &set, 0, MARK_SRC_DEST_CALL);
|
||||
mark_referenced_resources (trial, &needed, 1);
|
||||
mark_referenced_resources (trial, &needed, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2255,13 +2257,13 @@ fill_simple_delay_slots (int non_jumps_p)
|
|||
if (CALL_P (insn))
|
||||
{
|
||||
mark_set_resources (insn, &set, 0, MARK_SRC_DEST_CALL);
|
||||
mark_referenced_resources (insn, &needed, 1);
|
||||
mark_referenced_resources (insn, &needed, true);
|
||||
maybe_never = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
mark_set_resources (insn, &set, 0, MARK_SRC_DEST_CALL);
|
||||
mark_referenced_resources (insn, &needed, 1);
|
||||
mark_referenced_resources (insn, &needed, true);
|
||||
if (JUMP_P (insn))
|
||||
target = JUMP_LABEL (insn);
|
||||
}
|
||||
|
@ -2296,9 +2298,9 @@ fill_simple_delay_slots (int non_jumps_p)
|
|||
/* See if we have a resource problem before we try to
|
||||
split. */
|
||||
if (GET_CODE (pat) != SEQUENCE
|
||||
&& ! insn_references_resource_p (trial, &set, 1)
|
||||
&& ! insn_sets_resource_p (trial, &set, 1)
|
||||
&& ! insn_sets_resource_p (trial, &needed, 1)
|
||||
&& ! insn_references_resource_p (trial, &set, true)
|
||||
&& ! insn_sets_resource_p (trial, &set, true)
|
||||
&& ! insn_sets_resource_p (trial, &needed, true)
|
||||
#ifdef HAVE_cc0
|
||||
&& ! (reg_mentioned_p (cc0_rtx, pat) && ! sets_cc0_p (pat))
|
||||
#endif
|
||||
|
@ -2322,7 +2324,7 @@ fill_simple_delay_slots (int non_jumps_p)
|
|||
}
|
||||
|
||||
mark_set_resources (trial, &set, 0, MARK_SRC_DEST_CALL);
|
||||
mark_referenced_resources (trial, &needed, 1);
|
||||
mark_referenced_resources (trial, &needed, true);
|
||||
|
||||
/* Ensure we don't put insns between the setting of cc and the
|
||||
comparison by moving a setting of cc into an earlier delay
|
||||
|
@ -2349,9 +2351,9 @@ fill_simple_delay_slots (int non_jumps_p)
|
|||
&& ! (NONJUMP_INSN_P (next_trial)
|
||||
&& GET_CODE (PATTERN (next_trial)) == SEQUENCE)
|
||||
&& !JUMP_P (next_trial)
|
||||
&& ! insn_references_resource_p (next_trial, &set, 1)
|
||||
&& ! insn_sets_resource_p (next_trial, &set, 1)
|
||||
&& ! insn_sets_resource_p (next_trial, &needed, 1)
|
||||
&& ! insn_references_resource_p (next_trial, &set, true)
|
||||
&& ! insn_sets_resource_p (next_trial, &set, true)
|
||||
&& ! insn_sets_resource_p (next_trial, &needed, true)
|
||||
#ifdef HAVE_cc0
|
||||
&& ! reg_mentioned_p (cc0_rtx, PATTERN (next_trial))
|
||||
#endif
|
||||
|
@ -2458,9 +2460,9 @@ fill_simple_delay_slots (int non_jumps_p)
|
|||
if (GET_CODE (pat) == USE || GET_CODE (pat) == CLOBBER)
|
||||
continue;
|
||||
|
||||
if (! insn_references_resource_p (trial, &set, 1)
|
||||
&& ! insn_sets_resource_p (trial, &needed, 1)
|
||||
&& ! insn_sets_resource_p (trial, &set, 1)
|
||||
if (! insn_references_resource_p (trial, &set, true)
|
||||
&& ! insn_sets_resource_p (trial, &needed, true)
|
||||
&& ! insn_sets_resource_p (trial, &set, true)
|
||||
#ifdef HAVE_cc0
|
||||
/* Don't want to mess with cc0 here. */
|
||||
&& ! reg_mentioned_p (cc0_rtx, pat)
|
||||
|
@ -2476,7 +2478,7 @@ fill_simple_delay_slots (int non_jumps_p)
|
|||
crtl->epilogue_delay_list
|
||||
= gen_rtx_INSN_LIST (VOIDmode, trial,
|
||||
crtl->epilogue_delay_list);
|
||||
mark_end_of_function_resources (trial, 1);
|
||||
mark_end_of_function_resources (trial, true);
|
||||
update_block (trial, trial);
|
||||
delete_related_insns (trial);
|
||||
|
||||
|
@ -2490,7 +2492,7 @@ fill_simple_delay_slots (int non_jumps_p)
|
|||
}
|
||||
|
||||
mark_set_resources (trial, &set, 0, MARK_SRC_DEST_CALL);
|
||||
mark_referenced_resources (trial, &needed, 1);
|
||||
mark_referenced_resources (trial, &needed, true);
|
||||
}
|
||||
|
||||
note_delay_statistics (slots_filled, 0);
|
||||
|
@ -2635,9 +2637,9 @@ fill_slots_from_thread (rtx insn, rtx condition, rtx thread,
|
|||
|
||||
/* If TRIAL conflicts with the insns ahead of it, we lose. Also,
|
||||
don't separate or copy insns that set and use CC0. */
|
||||
if (! insn_references_resource_p (trial, &set, 1)
|
||||
&& ! insn_sets_resource_p (trial, &set, 1)
|
||||
&& ! insn_sets_resource_p (trial, &needed, 1)
|
||||
if (! insn_references_resource_p (trial, &set, true)
|
||||
&& ! insn_sets_resource_p (trial, &set, true)
|
||||
&& ! insn_sets_resource_p (trial, &needed, true)
|
||||
#ifdef HAVE_cc0
|
||||
&& ! (reg_mentioned_p (cc0_rtx, pat)
|
||||
&& (! own_thread || ! sets_cc0_p (pat)))
|
||||
|
@ -2678,7 +2680,7 @@ fill_slots_from_thread (rtx insn, rtx condition, rtx thread,
|
|||
go into an annulled delay slot. */
|
||||
if (!must_annul
|
||||
&& (condition == const_true_rtx
|
||||
|| (! insn_sets_resource_p (trial, &opposite_needed, 1)
|
||||
|| (! insn_sets_resource_p (trial, &opposite_needed, true)
|
||||
&& ! may_trap_or_fault_p (pat))))
|
||||
{
|
||||
old_trial = trial;
|
||||
|
@ -2793,10 +2795,11 @@ fill_slots_from_thread (rtx insn, rtx condition, rtx thread,
|
|||
may be branching to a location that has a
|
||||
redundant insn. Skip any if so. */
|
||||
while (new_thread && ! own_thread
|
||||
&& ! insn_sets_resource_p (new_thread, &set, 1)
|
||||
&& ! insn_sets_resource_p (new_thread, &needed, 1)
|
||||
&& ! insn_sets_resource_p (new_thread, &set, true)
|
||||
&& ! insn_sets_resource_p (new_thread, &needed,
|
||||
true)
|
||||
&& ! insn_references_resource_p (new_thread,
|
||||
&set, 1)
|
||||
&set, true)
|
||||
&& (prior_insn
|
||||
= redundant_insn (new_thread, insn,
|
||||
delay_list)))
|
||||
|
@ -2818,7 +2821,7 @@ fill_slots_from_thread (rtx insn, rtx condition, rtx thread,
|
|||
/* This insn can't go into a delay slot. */
|
||||
lose = 1;
|
||||
mark_set_resources (trial, &set, 0, MARK_SRC_DEST_CALL);
|
||||
mark_referenced_resources (trial, &needed, 1);
|
||||
mark_referenced_resources (trial, &needed, true);
|
||||
|
||||
/* Ensure we don't put insns between the setting of cc and the comparison
|
||||
by moving a setting of cc into an earlier delay slot since these insns
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Definitions for computing resource usage of specific insns.
|
||||
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
|
||||
2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
|
@ -203,7 +203,7 @@ next_insn_no_annul (rtx insn)
|
|||
|
||||
void
|
||||
mark_referenced_resources (rtx x, struct resources *res,
|
||||
int include_delayed_effects)
|
||||
bool include_delayed_effects)
|
||||
{
|
||||
enum rtx_code code = GET_CODE (x);
|
||||
int i, j;
|
||||
|
@ -226,7 +226,7 @@ mark_referenced_resources (rtx x, struct resources *res,
|
|||
|
||||
case SUBREG:
|
||||
if (!REG_P (SUBREG_REG (x)))
|
||||
mark_referenced_resources (SUBREG_REG (x), res, 0);
|
||||
mark_referenced_resources (SUBREG_REG (x), res, false);
|
||||
else
|
||||
{
|
||||
unsigned int regno = subreg_regno (x);
|
||||
|
@ -253,7 +253,7 @@ mark_referenced_resources (rtx x, struct resources *res,
|
|||
res->volatil |= MEM_VOLATILE_P (x);
|
||||
|
||||
/* Mark registers used to access memory. */
|
||||
mark_referenced_resources (XEXP (x, 0), res, 0);
|
||||
mark_referenced_resources (XEXP (x, 0), res, false);
|
||||
return;
|
||||
|
||||
case CC0:
|
||||
|
@ -276,14 +276,14 @@ mark_referenced_resources (rtx x, struct resources *res,
|
|||
traditional asms unlike their normal usage. */
|
||||
|
||||
for (i = 0; i < ASM_OPERANDS_INPUT_LENGTH (x); i++)
|
||||
mark_referenced_resources (ASM_OPERANDS_INPUT (x, i), res, 0);
|
||||
mark_referenced_resources (ASM_OPERANDS_INPUT (x, i), res, false);
|
||||
return;
|
||||
|
||||
case CALL:
|
||||
/* The first operand will be a (MEM (xxx)) but doesn't really reference
|
||||
memory. The second operand may be referenced, though. */
|
||||
mark_referenced_resources (XEXP (XEXP (x, 0), 0), res, 0);
|
||||
mark_referenced_resources (XEXP (x, 1), res, 0);
|
||||
mark_referenced_resources (XEXP (XEXP (x, 0), 0), res, false);
|
||||
mark_referenced_resources (XEXP (x, 1), res, false);
|
||||
return;
|
||||
|
||||
case SET:
|
||||
|
@ -291,16 +291,16 @@ mark_referenced_resources (rtx x, struct resources *res,
|
|||
registers used to access memory are referenced. SET_DEST is
|
||||
also referenced if it is a ZERO_EXTRACT. */
|
||||
|
||||
mark_referenced_resources (SET_SRC (x), res, 0);
|
||||
mark_referenced_resources (SET_SRC (x), res, false);
|
||||
|
||||
x = SET_DEST (x);
|
||||
if (GET_CODE (x) == ZERO_EXTRACT
|
||||
|| GET_CODE (x) == STRICT_LOW_PART)
|
||||
mark_referenced_resources (x, res, 0);
|
||||
mark_referenced_resources (x, res, false);
|
||||
else if (GET_CODE (x) == SUBREG)
|
||||
x = SUBREG_REG (x);
|
||||
if (MEM_P (x))
|
||||
mark_referenced_resources (XEXP (x, 0), res, 0);
|
||||
mark_referenced_resources (XEXP (x, 0), res, false);
|
||||
return;
|
||||
|
||||
case CLOBBER:
|
||||
|
@ -372,7 +372,7 @@ mark_referenced_resources (rtx x, struct resources *res,
|
|||
}
|
||||
if (i >= seq_size)
|
||||
mark_referenced_resources (XEXP (XEXP (link, 0), 0),
|
||||
res, 0);
|
||||
res, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -519,7 +519,7 @@ find_dead_or_set_registers (rtx target, struct resources *res,
|
|||
if (jump_count >= 10)
|
||||
break;
|
||||
|
||||
mark_referenced_resources (insn, &needed, 1);
|
||||
mark_referenced_resources (insn, &needed, true);
|
||||
|
||||
/* For an annulled branch, mark_set_resources ignores slots
|
||||
filled by instructions from the target. This is correct
|
||||
|
@ -585,7 +585,7 @@ find_dead_or_set_registers (rtx target, struct resources *res,
|
|||
}
|
||||
}
|
||||
|
||||
mark_referenced_resources (insn, &needed, 1);
|
||||
mark_referenced_resources (insn, &needed, true);
|
||||
mark_set_resources (insn, &set, 0, MARK_SRC_DEST_CALL);
|
||||
|
||||
COPY_HARD_REG_SET (scratch, set.regs);
|
||||
|
@ -888,7 +888,7 @@ mark_target_live_regs (rtx insns, rtx target, struct resources *res)
|
|||
else if (return_insn_p (target))
|
||||
{
|
||||
*res = end_of_function_needs;
|
||||
mark_referenced_resources (target, res, 0);
|
||||
mark_referenced_resources (target, res, false);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1101,7 +1101,7 @@ mark_target_live_regs (rtx insns, rtx target, struct resources *res)
|
|||
/* Include JUMP_INSN in the needed registers. */
|
||||
for (insn = target; insn != stop_insn; insn = next_active_insn (insn))
|
||||
{
|
||||
mark_referenced_resources (insn, &needed, 1);
|
||||
mark_referenced_resources (insn, &needed, true);
|
||||
|
||||
COPY_HARD_REG_SET (scratch, needed.regs);
|
||||
AND_COMPL_HARD_REG_SET (scratch, set.regs);
|
||||
|
@ -1155,7 +1155,7 @@ init_resource_info (rtx epilogue_insn)
|
|||
|
||||
if (crtl->return_rtx != 0)
|
||||
mark_referenced_resources (crtl->return_rtx,
|
||||
&end_of_function_needs, 1);
|
||||
&end_of_function_needs, true);
|
||||
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
if (global_regs[i]
|
||||
|
@ -1274,7 +1274,7 @@ incr_ticks_for_insn (rtx insn)
|
|||
/* Add TRIAL to the set of resources used at the end of the current
|
||||
function. */
|
||||
void
|
||||
mark_end_of_function_resources (rtx trial, int include_delayed_effects)
|
||||
mark_end_of_function_resources (rtx trial, bool include_delayed_effects)
|
||||
{
|
||||
mark_referenced_resources (trial, &end_of_function_needs,
|
||||
include_delayed_effects);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* Definitions for computing resource usage of specific insns.
|
||||
Copyright (C) 1999, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2003, 2004, 2006, 2007, 2009
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
|
@ -48,10 +49,10 @@ enum mark_resource_type
|
|||
extern void mark_target_live_regs (rtx, rtx, struct resources *);
|
||||
extern void mark_set_resources (rtx, struct resources *, int,
|
||||
enum mark_resource_type);
|
||||
extern void mark_referenced_resources (rtx, struct resources *, int);
|
||||
extern void mark_referenced_resources (rtx, struct resources *, bool);
|
||||
extern void clear_hashed_info_for_insn (rtx);
|
||||
extern void incr_ticks_for_insn (rtx);
|
||||
extern void mark_end_of_function_resources (rtx, int);
|
||||
extern void mark_end_of_function_resources (rtx, bool);
|
||||
extern void init_resource_info (rtx);
|
||||
extern void free_resource_info (void);
|
||||
|
||||
|
|
Loading…
Reference in New Issue