From e48e460b72d58ee590e36c3e8854d5b79495cdc0 Mon Sep 17 00:00:00 2001 From: zlomek Date: Tue, 24 Feb 2004 21:45:20 +0000 Subject: PR/14240 * rtlanal.c (replace_label): Fix replacing labels in constant pool. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78392 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/rtlanal.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'gcc/rtlanal.c') diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index f643dfe192a..0ec52dad726 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -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; -- cgit v1.2.1