| Index: gcc/gcc/resource.c
|
| diff --git a/gcc/gcc/resource.c b/gcc/gcc/resource.c
|
| index 5a28742caadc95d67f962091d0bf9863d9b3f64d..9dc44b9ac298f6497479a57f6d749fe193f8a30c 100644
|
| --- a/gcc/gcc/resource.c
|
| +++ b/gcc/gcc/resource.c
|
| @@ -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;
|
| }
|
|
|
| @@ -957,7 +957,7 @@ mark_target_live_regs (rtx insns, rtx target, struct resources *res)
|
|
|
| /* Get starting and ending insn, handling the case where each might
|
| be a SEQUENCE. */
|
| - start_insn = (b == ENTRY_BLOCK_PTR->next_bb->index ?
|
| + start_insn = (b == ENTRY_BLOCK_PTR->next_bb->index ?
|
| insns : BB_HEAD (BASIC_BLOCK (b)));
|
| stop_insn = target;
|
|
|
| @@ -976,6 +976,9 @@ mark_target_live_regs (rtx insns, rtx target, struct resources *res)
|
| rtx real_insn = insn;
|
| enum rtx_code code = GET_CODE (insn);
|
|
|
| + if (DEBUG_INSN_P (insn))
|
| + continue;
|
| +
|
| /* If this insn is from the target of a branch, it isn't going to
|
| be used in the sequel. If it is used in both cases, this
|
| test will not be true. */
|
| @@ -1102,7 +1105,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);
|
| @@ -1156,7 +1159,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]
|
| @@ -1275,7 +1278,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);
|
|
|