diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2007-01-04 05:35:52 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2007-01-04 05:35:52 +0000 |
commit | b7c61d9abb91cd7ce1c91e634afd2351ebcdbc70 (patch) | |
tree | f68a870e6de85ae499d89669c65136949a432ecf /gas | |
parent | 67cf15b76842d665784574fe27f86df4400d6f5a (diff) | |
download | gdb-b7c61d9abb91cd7ce1c91e634afd2351ebcdbc70.zip gdb-b7c61d9abb91cd7ce1c91e634afd2351ebcdbc70.tar.gz gdb-b7c61d9abb91cd7ce1c91e634afd2351ebcdbc70.tar.bz2 |
2007-01-03 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (swap_operands): Remove branches.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/config/tc-i386.c | 49 |
1 files changed, 20 insertions, 29 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 1f28ad9..6cfb04f 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -2280,16 +2280,13 @@ swap_operands (void) union i386_op temp_op; unsigned int temp_type; enum bfd_reloc_code_real temp_reloc; - int xchg1 = 0; - int xchg2 = 0; + int xchg1, xchg2; - if (i.operands == 4) - /* There will be two exchanges in a 4 operand instruction. - First exchange is the done inside this block.(1st and 4rth operand) - The next exchange is done outside this block.(2nd and 3rd operand) */ + switch (i.operands) { - xchg1 = 0; - xchg2 = 3; + case 4: + xchg1 = 1; + xchg2 = i.operands - 2; temp_type = i.types[xchg2]; i.types[xchg2] = i.types[xchg1]; i.types[xchg1] = temp_type; @@ -2299,29 +2296,23 @@ swap_operands (void) temp_reloc = i.reloc[xchg2]; i.reloc[xchg2] = i.reloc[xchg1]; i.reloc[xchg1] = temp_reloc; - xchg1 = 1; - xchg2 = 2; - } - - if (i.operands == 2) - { - xchg1 = 0; - xchg2 = 1; - } - else if (i.operands == 3) - { + case 3: + case 2: xchg1 = 0; - xchg2 = 2; + xchg2 = i.operands - 1; + temp_type = i.types[xchg2]; + i.types[xchg2] = i.types[xchg1]; + i.types[xchg1] = temp_type; + temp_op = i.op[xchg2]; + i.op[xchg2] = i.op[xchg1]; + i.op[xchg1] = temp_op; + temp_reloc = i.reloc[xchg2]; + i.reloc[xchg2] = i.reloc[xchg1]; + i.reloc[xchg1] = temp_reloc; + break; + default: + abort (); } - temp_type = i.types[xchg2]; - i.types[xchg2] = i.types[xchg1]; - i.types[xchg1] = temp_type; - temp_op = i.op[xchg2]; - i.op[xchg2] = i.op[xchg1]; - i.op[xchg1] = temp_op; - temp_reloc = i.reloc[xchg2]; - i.reloc[xchg2] = i.reloc[xchg1]; - i.reloc[xchg1] = temp_reloc; if (i.mem_operands == 2) { |