emit-rtl.c (mark_used_flags): New function.

* emit-rtl.c (mark_used_flags): New function.
	(set_used_flags, reset_used_flags): Call it.

From-SVN: r166101
This commit is contained in:
Nathan Froyd 2010-10-31 01:58:12 +00:00 committed by Nathan Froyd
parent 6528027423
commit 76369a821b
2 changed files with 37 additions and 65 deletions

View File

@ -1,3 +1,8 @@
2010-10-30 Nathan Froyd <froydnj@codesourcery.com>
* emit-rtl.c (mark_used_flags): New function.
(set_used_flags, reset_used_flags): Call it.
2010-10-30 Uros Bizjak <ubizjak@gmail.com>
PR middle-end/44569
@ -160,6 +165,22 @@
* recog.c (split_all_insns): Remove dead code.
2010-10-28 Nathan Froyd <froydnj@codesourcery.com>
* config/microblaze/microblaze-protos.h (function_arg): Delete.
(function_arg_advance): Delete.
* config/microblaze/microblaze.h (FUNCTION_ARG_ADVANCE): Delete.
(FUNCTION_ARG): Delete.
* config/microblaze/microblaze.c (function_arg_advance): Rename to...
(microblaze_function_arg_advance): ...this. Make static. Take a
const_tree and a bool.
(function-arg): Rename to...
(microblaze_function_arg): ...this. Make static. Take a const_tree
and a bool.
(microblaze_expand_prologue): Call targetm.calls.function_arg and
targetm.calls.function_arg_advance.
(TARGET_FUNCTION_ARG, TARGET_FUNCTION_ARG_ADVANCE): Define.
2010-10-28 Nathan Froyd <froydnj@codesourcery.com>
* score.h (FUNCTION_ARG, FUNCTION_ARG_ADVANCE): Delete.

View File

@ -2728,11 +2728,10 @@ repeat:
return;
}
/* Clear all the USED bits in X to allow copy_rtx_if_shared to be used
to look for shared sub-parts. */
/* Set the USED bit in X and its non-shareable subparts to FLAG. */
void
reset_used_flags (rtx x)
static void
mark_used_flags (rtx x, int flag)
{
int i, j;
enum rtx_code code;
@ -2778,7 +2777,7 @@ repeat:
break;
}
RTX_FLAG (x, used) = 0;
RTX_FLAG (x, used) = flag;
format_ptr = GET_RTX_FORMAT (code);
length = GET_RTX_LENGTH (code);
@ -2793,81 +2792,33 @@ repeat:
x = XEXP (x, i);
goto repeat;
}
reset_used_flags (XEXP (x, i));
mark_used_flags (XEXP (x, i), flag);
break;
case 'E':
for (j = 0; j < XVECLEN (x, i); j++)
reset_used_flags (XVECEXP (x, i, j));
mark_used_flags (XVECEXP (x, i, j), flag);
break;
}
}
}
/* Clear all the USED bits in X to allow copy_rtx_if_shared to be used
to look for shared sub-parts. */
void
reset_used_flags (rtx x)
{
mark_used_flags (x, 0);
}
/* Set all the USED bits in X to allow copy_rtx_if_shared to be used
to look for shared sub-parts. */
void
set_used_flags (rtx x)
{
int i, j;
enum rtx_code code;
const char *format_ptr;
if (x == 0)
return;
code = GET_CODE (x);
/* These types may be freely shared so we needn't do any resetting
for them. */
switch (code)
{
case REG:
case DEBUG_EXPR:
case VALUE:
case CONST_INT:
case CONST_DOUBLE:
case CONST_FIXED:
case CONST_VECTOR:
case SYMBOL_REF:
case CODE_LABEL:
case PC:
case CC0:
return;
case DEBUG_INSN:
case INSN:
case JUMP_INSN:
case CALL_INSN:
case NOTE:
case LABEL_REF:
case BARRIER:
/* The chain of insns is not being copied. */
return;
default:
break;
}
RTX_FLAG (x, used) = 1;
format_ptr = GET_RTX_FORMAT (code);
for (i = 0; i < GET_RTX_LENGTH (code); i++)
{
switch (*format_ptr++)
{
case 'e':
set_used_flags (XEXP (x, i));
break;
case 'E':
for (j = 0; j < XVECLEN (x, i); j++)
set_used_flags (XVECEXP (x, i, j));
break;
}
}
mark_used_flags (x, 1);
}
/* Copy X if necessary so that it won't be altered by changes in OTHER.