rtlanal.c (replace_label): Fix replacing labels in constant pool.

PR/14240
	* rtlanal.c (replace_label): Fix replacing labels in constant pool.

From-SVN: r78392
This commit is contained in:
Josef Zlomek 2004-02-24 22:45:20 +01:00 committed by Josef Zlomek
parent b79cef0683
commit 173cd57124
2 changed files with 9 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2004-02-24 Josef Zlomek <zlomekj@suse.cz>
PR/14240
* rtlanal.c (replace_label): Fix replacing labels in constant pool.
2004-02-24 Geoffrey Keating <geoffk@apple.com>
* config/darwin.h (TARGET_HAS_F_SETLKW): Define.

View File

@ -2715,7 +2715,6 @@ int
replace_label (rtx *x, void *data)
{
rtx l = *x;
rtx tmp;
rtx old_label = ((replace_label_data *) data)->r1;
rtx new_label = ((replace_label_data *) data)->r2;
bool update_label_nuses = ((replace_label_data *) data)->update_label_nuses;
@ -2723,12 +2722,10 @@ replace_label (rtx *x, void *data)
if (l == NULL_RTX)
return 0;
if (GET_CODE (l) == MEM
&& (tmp = XEXP (l, 0)) != NULL_RTX
&& GET_CODE (tmp) == SYMBOL_REF
&& CONSTANT_POOL_ADDRESS_P (tmp))
if (GET_CODE (l) == SYMBOL_REF
&& CONSTANT_POOL_ADDRESS_P (l))
{
rtx c = get_pool_constant (tmp);
rtx c = get_pool_constant (l);
if (rtx_referenced_p (old_label, c))
{
rtx new_c, new_l;
@ -2744,7 +2741,7 @@ replace_label (rtx *x, void *data)
/* Add the new constant NEW_C to constant pool and replace
the old reference to constant by new reference. */
new_l = force_const_mem (get_pool_mode (tmp), new_c);
new_l = XEXP (force_const_mem (get_pool_mode (l), new_c), 0);
*x = replace_rtx (l, l, new_l);
}
return 0;