From 834a65aadfda9755d8bd6ec76ba8b3a6d20a1beb Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Sat, 1 Jul 2017 00:42:19 +0100 Subject: MIPS/GAS: Use a switch on relaxation type in microMIPS fixup creation Use a switch on the relaxation type rather than a chain of conditionals in microMIPS fixup creation, improving source code structure and aiding the compiler with code generation. gas/ * config/tc-mips.c (md_convert_frag): Use a switch on the microMIPS relaxation type rather than a chain of conditionals. --- gas/ChangeLog | 5 +++++ gas/config/tc-mips.c | 25 +++++++++++++++---------- 2 files changed, 20 insertions(+), 10 deletions(-) (limited to 'gas') diff --git a/gas/ChangeLog b/gas/ChangeLog index 94a6a68..31de3e9 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,10 @@ 2017-06-30 Maciej W. Rozycki + * config/tc-mips.c (md_convert_frag): Use a switch on the + microMIPS relaxation type rather than a chain of conditionals. + +2017-06-30 Maciej W. Rozycki + * config/tc-mips.c (md_convert_frag): Rewrite `fix_new_exp' calls in terms of `fix_new'. diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index a58c484..4eeb5ee 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -18342,16 +18342,21 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec, fragS *fragp) /* We generate a fixup instead of applying it right now, because if there is linker relaxation, we're going to need the relocations. */ - if (type == 'D') - fixp = fix_new (fragp, buf - fragp->fr_literal, 2, - fragp->fr_symbol, fragp->fr_offset, - TRUE, BFD_RELOC_MICROMIPS_10_PCREL_S1); - else if (type == 'E') - fixp = fix_new (fragp, buf - fragp->fr_literal, 2, - fragp->fr_symbol, fragp->fr_offset, - TRUE, BFD_RELOC_MICROMIPS_7_PCREL_S1); - else - abort (); + switch (type) + { + case 'D': + fixp = fix_new (fragp, buf - fragp->fr_literal, 2, + fragp->fr_symbol, fragp->fr_offset, + TRUE, BFD_RELOC_MICROMIPS_10_PCREL_S1); + break; + case 'E': + fixp = fix_new (fragp, buf - fragp->fr_literal, 2, + fragp->fr_symbol, fragp->fr_offset, + TRUE, BFD_RELOC_MICROMIPS_7_PCREL_S1); + break; + default: + abort (); + } fixp->fx_file = fragp->fr_file; fixp->fx_line = fragp->fr_line; -- cgit v1.1