aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-mn10300.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2001-03-30 00:06:10 +0000
committerAlan Modra <amodra@gmail.com>2001-03-30 00:06:10 +0000
commit93c2a809afebb143e36fc1e666c5de746e76d741 (patch)
treebcf004bb8591de6c9677974ce8a0a57cd283fd65 /gas/config/tc-mn10300.c
parent23ec5d03124e6105a19f9d6d7d1410f0de589f50 (diff)
downloadfsf-binutils-gdb-93c2a809afebb143e36fc1e666c5de746e76d741.zip
fsf-binutils-gdb-93c2a809afebb143e36fc1e666c5de746e76d741.tar.gz
fsf-binutils-gdb-93c2a809afebb143e36fc1e666c5de746e76d741.tar.bz2
Prepare for multi-pass relaxation.
Diffstat (limited to 'gas/config/tc-mn10300.c')
-rw-r--r--gas/config/tc-mn10300.c55
1 files changed, 17 insertions, 38 deletions
diff --git a/gas/config/tc-mn10300.c b/gas/config/tc-mn10300.c
index 8504e84..ba93b41 100644
--- a/gas/config/tc-mn10300.c
+++ b/gas/config/tc-mn10300.c
@@ -1843,44 +1843,23 @@ md_estimate_size_before_relax (fragp, seg)
fragS *fragp;
asection *seg;
{
- if (fragp->fr_subtype == 0)
- return 2;
- if (fragp->fr_subtype == 3)
- return 3;
- if (fragp->fr_subtype == 6)
- {
- if (!S_IS_DEFINED (fragp->fr_symbol)
- || seg != S_GET_SEGMENT (fragp->fr_symbol))
- {
- fragp->fr_subtype = 7;
- return 7;
- }
- else
- return 5;
- }
- if (fragp->fr_subtype == 8)
- {
- if (!S_IS_DEFINED (fragp->fr_symbol)
- || seg != S_GET_SEGMENT (fragp->fr_symbol))
- {
- fragp->fr_subtype = 9;
- return 6;
- }
- else
- return 4;
- }
- if (fragp->fr_subtype == 10)
- {
- if (!S_IS_DEFINED (fragp->fr_symbol)
- || seg != S_GET_SEGMENT (fragp->fr_symbol))
- {
- fragp->fr_subtype = 12;
- return 5;
- }
- else
- return 2;
- }
- abort ();
+ if (fragp->fr_subtype == 6
+ && (!S_IS_DEFINED (fragp->fr_symbol)
+ || seg != S_GET_SEGMENT (fragp->fr_symbol)))
+ fragp->fr_subtype = 7;
+ else if (fragp->fr_subtype == 8
+ && (!S_IS_DEFINED (fragp->fr_symbol)
+ || seg != S_GET_SEGMENT (fragp->fr_symbol)))
+ fragp->fr_subtype = 9;
+ else if (fragp->fr_subtype == 10
+ && (!S_IS_DEFINED (fragp->fr_symbol)
+ || seg != S_GET_SEGMENT (fragp->fr_symbol)))
+ fragp->fr_subtype = 12;
+
+ if (fragp->fr_subtype >= sizeof (md_relax_table) / sizeof (md_relax_table[0]))
+ abort ();
+
+ return md_relax_table[fragp->fr_subtype].rlx_length;
}
long