Commit 6bc627b3 by Ulrich Weigand Committed by Ulrich Weigand

s390.c (s390_chunkify_pool): Do not confuse insn UIDs with insn addresses.

	* config/s390/s390.c (s390_chunkify_pool): Do not confuse
	insn UIDs with insn addresses.

From-SVN: r50112
parent bded68b1
2002-02-27 Ulrich Weigand <uweigand@de.ibm.com>
* config/s390/s390.c (s390_chunkify_pool): Do not confuse
insn UIDs with insn addresses.
2002-02-27 Zack Weinberg <zack@codesourcery.com> 2002-02-27 Zack Weinberg <zack@codesourcery.com>
* c-common.c, c-common.h, c-decl.c, c-lex.c, c-parse.in, * c-common.c, c-common.h, c-decl.c, c-lex.c, c-parse.in,
......
...@@ -2459,7 +2459,7 @@ s390_split_branches (void) ...@@ -2459,7 +2459,7 @@ s390_split_branches (void)
static void static void
s390_chunkify_pool (void) s390_chunkify_pool (void)
{ {
int *ltorg_uids, max_ltorg, chunk, last_addr; int *ltorg_uids, max_ltorg, chunk, last_addr, next_addr;
rtx insn; rtx insn;
/* Do we need to chunkify the literal pool? */ /* Do we need to chunkify the literal pool? */
...@@ -2498,12 +2498,15 @@ s390_chunkify_pool (void) ...@@ -2498,12 +2498,15 @@ s390_chunkify_pool (void)
} }
} }
ltorg_uids[max_ltorg] = insn_current_address + 1; ltorg_uids[max_ltorg] = -1;
/* Find and mark all labels that are branched into /* Find and mark all labels that are branched into
from an insn belonging to a different chunk. */ from an insn belonging to a different chunk. */
chunk = last_addr = 0; chunk = last_addr = 0;
next_addr = ltorg_uids[chunk] == -1 ? insn_current_address + 1
: INSN_ADDRESSES (ltorg_uids[chunk]);
for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
{ {
if (GET_CODE (insn) == JUMP_INSN) if (GET_CODE (insn) == JUMP_INSN)
...@@ -2528,8 +2531,8 @@ s390_chunkify_pool (void) ...@@ -2528,8 +2531,8 @@ s390_chunkify_pool (void)
if (label) if (label)
{ {
if (INSN_ADDRESSES (INSN_UID (label)) <= last_addr if (INSN_ADDRESSES (INSN_UID (label)) <= last_addr
|| INSN_ADDRESSES (INSN_UID (label)) > ltorg_uids[chunk]) || INSN_ADDRESSES (INSN_UID (label)) > next_addr)
SYMBOL_REF_USED (label) = 1; SYMBOL_REF_USED (label) = 1;
} }
} }
else if (GET_CODE (pat) == ADDR_VEC else if (GET_CODE (pat) == ADDR_VEC
...@@ -2542,7 +2545,7 @@ s390_chunkify_pool (void) ...@@ -2542,7 +2545,7 @@ s390_chunkify_pool (void)
rtx label = XEXP (XVECEXP (pat, diff_p, i), 0); rtx label = XEXP (XVECEXP (pat, diff_p, i), 0);
if (INSN_ADDRESSES (INSN_UID (label)) <= last_addr if (INSN_ADDRESSES (INSN_UID (label)) <= last_addr
|| INSN_ADDRESSES (INSN_UID (label)) > ltorg_uids[chunk]) || INSN_ADDRESSES (INSN_UID (label)) > next_addr)
SYMBOL_REF_USED (label) = 1; SYMBOL_REF_USED (label) = 1;
} }
} }
...@@ -2550,7 +2553,9 @@ s390_chunkify_pool (void) ...@@ -2550,7 +2553,9 @@ s390_chunkify_pool (void)
if (INSN_UID (insn) == ltorg_uids[chunk]) if (INSN_UID (insn) == ltorg_uids[chunk])
{ {
last_addr = ltorg_uids[chunk++]; last_addr = INSN_ADDRESSES (ltorg_uids[chunk++]);
next_addr = ltorg_uids[chunk] == -1 ? insn_current_address + 1
: INSN_ADDRESSES (ltorg_uids[chunk]);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment