* config/tc-score.c (s3_my_get_expression): Delete unused local
authorNick Clifton <nickc@redhat.com>
Mon, 13 Jun 2011 09:45:28 +0000 (09:45 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 13 Jun 2011 09:45:28 +0000 (09:45 +0000)
variable 'seg'.
(s3_do_ldst_insn): Delete unused local variable 'strbak'.
(s3_do16_ldst_insn): Delete unused local variable 'temp'.
(s3_do_macro_bcmp): Zero inst_expand array.
(s3_do_macro_bcmpz): Likewise.
(s3_s_score_end): Delete unused local variable 'dot'.
(s3_gen_reloc): Delete unused local variables 'f', 's', and 'e'.
* config/tc-score7.c (s7_my_get_expression): Delete unused local
variable 'seg'.
(s7_do_ldst_insn): Delete unused local variable 'strbak'.
(s7_b32_relax_to_b16): Delete unused local variables 'r_old' and
'r_new'.
(s7_s_score_end): Delete unused local variable 'dot'.
(s7_relax_frag): Delete unused local variable 'relax_size'.
(s7_gen_reloc): Delete unused local variables 'f', 's', and 'e'.

gas/ChangeLog
gas/config/tc-score.c
gas/config/tc-score7.c

index c8902a077090ba37caa33e99a43bdc62c1739a76..d265730b024cc9df92553ebc39a03ef76d464abe 100644 (file)
@@ -1,3 +1,22 @@
+2011-06-13  Nick Clifton  <nickc@redhat.com>
+
+       * config/tc-score.c (s3_my_get_expression): Delete unused local
+       variable 'seg'.
+       (s3_do_ldst_insn): Delete unused local variable 'strbak'.
+       (s3_do16_ldst_insn): Delete unused local variable 'temp'.
+       (s3_do_macro_bcmp): Zero inst_expand array.
+       (s3_do_macro_bcmpz): Likewise.
+       (s3_s_score_end): Delete unused local variable 'dot'.
+       (s3_gen_reloc): Delete unused local variables 'f', 's', and 'e'.
+       * config/tc-score7.c (s7_my_get_expression): Delete unused local
+       variable 'seg'.
+       (s7_do_ldst_insn): Delete unused local variable 'strbak'.
+       (s7_b32_relax_to_b16): Delete unused local variables 'r_old' and
+       'r_new'.
+       (s7_s_score_end): Delete unused local variable 'dot'.
+       (s7_relax_frag): Delete unused local variable 'relax_size'.
+       (s7_gen_reloc): Delete unused local variables 'f', 's', and 'e'.
+
 2011-06-10  H.J. Lu  <hongjiu.lu@intel.com>
 
        AVX Programming Reference (June, 2011)
@@ -5,7 +24,7 @@
        unsupported_vector_index_register.
        (cpu_arch): Add .avx2, .bmi2, .lzcnt and .invpcid.
        (check_VecOperands): New.
-       (match_template): Call check_VecOperands.  Handle 
+       (match_template): Call check_VecOperands.  Handle
        invalid_vsib_address and unsupported_vector_index_register.
        (build_modrm_byte): Support VecSIB.  Check register-only source
        operand when two source operands are swapped.
index 61220de3eac2e09b2f90e26ec464e8ee669895c3..3d620028de796ac7a4ac17d82ad56c0b1755faee 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-score.c -- Assembler for Score
-   Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+   Copyright 2006, 2007, 2008, 2009, 2011 Free Software Foundation, Inc.
    Contributed by:
    Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
@@ -130,8 +130,8 @@ static void s3_do16_cmpi (char *);
 static void s3_do16_rdi5 (char *);
 static void s3_do16_xi5 (char *);
 static void s3_do16_ldst_insn (char *);
-static void s3_do16_slli_srli(char *);
-static void s3_do16_ldiu(char *);
+static void s3_do16_slli_srli (char *);
+static void s3_do16_ldiu (char *);
 static void s3_do16_push_pop (char *);
 static void s3_do16_rpush (char *);
 static void s3_do16_rpop (char *);
@@ -531,9 +531,9 @@ static struct s3_datafield_range s3_score_df_range[] =
   {_IMM16_pic,        16, {0, (1 << 16) - 1}},         /* (     0 ~ 65535) */
   {_SIMM5,            5,  {-(1 << 4), (1 << 4) - 1}},  /* (   -16 ~ 15   ) */
   {_SIMM6,            6,  {-(1 << 5), (1 << 5) - 1}},  /* (   -32 ~ 31   ) */
-  {_IMM32,            32, {0, 0xfffffff}},        
-  {_SIMM32,           32, {-0x80000000, 0x7fffffff}},  
-  {_IMM11,            11, {0, (1 << 11) - 1}},         
+  {_IMM32,            32, {0, 0xfffffff}},
+  {_SIMM32,           32, {-0x80000000, 0x7fffffff}},
+  {_IMM11,            11, {0, (1 << 11) - 1}},
 };
 
 struct s3_asm_opcode
@@ -557,7 +557,7 @@ struct s3_asm_opcode
   void (*parms) (char *);
 };
 
-static const struct s3_asm_opcode s3_score_ldst_insns[] = 
+static const struct s3_asm_opcode s3_score_ldst_insns[] =
 {
   {"lw",        0x20000000, 0x3e000000, 0x1000,     Rd_rvalueRs_SI15,     s3_do_ldst_insn},
   {"lw",        0x06000000, 0x3e000007, 0x8000,     Rd_rvalueRs_preSI12,  s3_do_ldst_insn},
@@ -585,7 +585,7 @@ static const struct s3_asm_opcode s3_score_ldst_insns[] =
   {"sb",        0x0e000007, 0x3e000007, 0x8000,     Rd_lvalueRs_postSI12, s3_do_ldst_insn},
 };
 
-static const struct s3_asm_opcode s3_score_insns[] = 
+static const struct s3_asm_opcode s3_score_insns[] =
 {
   {"abs",       0x3800000a, 0x3e007fff, 0x8000,     Rd_Rs_x,              s3_do_dsp3},
   {"abs.s",     0x3800004b, 0x3e007fff, 0x8000,     Rd_Rs_x,              s3_do_dsp3},
@@ -691,7 +691,7 @@ static const struct s3_asm_opcode s3_score_insns[] =
   {"brccl",     0x00000409, 0x3e007fff, 0x8000,     x_Rs_x,               s3_do_rs},
   {"brgtul",    0x00000809, 0x3e007fff, 0x8000,     x_Rs_x,               s3_do_rs},
   {"brleul",    0x00000c09, 0x3e007fff, 0x8000,     x_Rs_x,               s3_do_rs},
-  {"breql",     0x00001009, 0x3e007fff, 0x8000,     x_Rs_x,               s3_do_rs}, 
+  {"breql",     0x00001009, 0x3e007fff, 0x8000,     x_Rs_x,               s3_do_rs},
   {"brnel",     0x00001409, 0x3e007fff, 0x8000,     x_Rs_x,               s3_do_rs},
   {"brgtl",     0x00001809, 0x3e007fff, 0x8000,     x_Rs_x,               s3_do_rs},
   {"brlel",     0x00001c09, 0x3e007fff, 0x8000,     x_Rs_x,               s3_do_rs},
@@ -749,8 +749,8 @@ static const struct s3_asm_opcode s3_score_insns[] =
   /* s3_inst.relax */
   {"ldi",       0x020c0000, 0x3e0e0000, 0x6400,     Rd_SI16,              s3_do_rdsi16},
   {"ldis",      0x0a0c0000, 0x3e0e0000, 0x8000,     Rd_I16,               s3_do_ldis},
-  /* ldi <-> ldiu!.  */  
+
+  /* ldi <-> ldiu!.  */
   {"ldiu!",     0x6400,     0x7c00,     0x8000,     Rd_I5,                s3_do16_ldiu},
 
   /*ltbb! , ltbh! ltbw! */
@@ -954,9 +954,9 @@ static const struct s3_asm_opcode s3_score_insns[] =
   {"li",        0x020c0000, 0x3e0e0000, 0x8000,     Insn_Type_SYN,        s3_do_macro_li_rdi32},
 
   /* la reg, imm32        -->(1)  ldi  reg, simm16
-                             (2)  ldis reg, %HI(imm32)        
-                                  ori  reg, %LO(imm32) 
-          
+                             (2)  ldis reg, %HI(imm32)
+                                  ori  reg, %LO(imm32)
+
      la reg, symbol       -->(1)  lis  reg, %HI(imm32)
                                   ori  reg, %LO(imm32)  */
   {"la",        0x020c0000, 0x3e0e0000, 0x8000,     Insn_Type_SYN,        s3_do_macro_la_rdi32},
@@ -1143,7 +1143,7 @@ s3_do_rdrsrs (char *str)
     {
       /* Check mulr, mulur rd is even number.  */
       if (((s3_inst.instruction & 0x3e0003ff) == 0x00000340
-            || (s3_inst.instruction & 0x3e0003ff) == 0x00000342)
+          || (s3_inst.instruction & 0x3e0003ff) == 0x00000342)
           && (reg % 2))
         {
           s3_inst.error = _("rd must be even number.");
@@ -1176,7 +1176,7 @@ s3_walk_no_bignums (symbolS * sp)
   if (symbol_get_value_expression (sp)->X_add_symbol)
     return (s3_walk_no_bignums (symbol_get_value_expression (sp)->X_add_symbol)
            || (symbol_get_value_expression (sp)->X_op_symbol
-               && s3_walk_no_bignums (symbol_get_value_expression (sp)->X_op_symbol)));  
+               && s3_walk_no_bignums (symbol_get_value_expression (sp)->X_op_symbol)));
 
   return 0;
 }
@@ -1185,12 +1185,11 @@ static int
 s3_my_get_expression (expressionS * ep, char **str)
 {
   char *save_in;
-  segT seg;
 
   save_in = input_line_pointer;
   input_line_pointer = *str;
   s3_in_my_get_expression = 1;
-  seg = expression (ep);
+  (void) expression (ep);
   s3_in_my_get_expression = 0;
 
   if (ep->X_op == O_illegal)
@@ -1305,18 +1304,12 @@ s3_validate_immediate (bfd_signed_vma val, unsigned int data_type, int hex_p)
 
     case _IMM5_MULTI_LOAD:
       if (val >= 2 && val <= 32)
-        {       
+        {
           if (val == 32)
-            {       
-              val = 0;
-            }       
+           val = 0;
           return val;
-        }       
-      else    
-        {       
-          return (int) s3_FAIL;
-        }       
-      break;  
+        }
+      return (int) s3_FAIL;
 
     case _IMM32:
       if (val >= 0 && val <= 0xffffffff)
@@ -1393,10 +1386,10 @@ s3_data_op2 (char **str, int shift, enum score_data_type data_type)
         }
       dataptr = (char *)data_exp;
 
-      if ((dataptr != NULL) 
+      if ((dataptr != NULL)
           && (((strstr (dataptr, "0x")) != NULL)
               || ((strstr (dataptr, "0X")) != NULL)))
-        { 
+        {
           hex_p = 1;
           if ((data_type != _SIMM16_LA)
               && (data_type != _VALUE_HI16)
@@ -1431,9 +1424,9 @@ s3_data_op2 (char **str, int shift, enum score_data_type data_type)
           && (s3_inst.type != Rd_lvalueRs_SI15)
           && (s3_inst.type != Insn_internal)
           && (((*dataptr >= 'a') && (*dataptr <= 'z'))
-             || ((*dataptr == '0') && (*(dataptr + 1) == 'x') && (*(dataptr + 2) != '0'))
-             || ((*dataptr == '+') && (*(dataptr + 1) != '0'))
-             || ((*dataptr == '-') && (*(dataptr + 1) != '0'))))
+             || ((*dataptr == '0') && (*(dataptr + 1) == 'x') && (*(dataptr + 2) != '0'))
+             || ((*dataptr == '+') && (*(dataptr + 1) != '0'))
+             || ((*dataptr == '-') && (*(dataptr + 1) != '0'))))
         {
           s3_inst.error = s3_BAD_ARGS;
           return (int) s3_FAIL;
@@ -1600,7 +1593,9 @@ s3_do_rdsi16 (char *str)
   else  if ((s3_inst.instruction & 0x02040001) == 0x02040001)
     {
       /*  imm <=0x3f  (5 bit<<1)*/
-      if (((s3_inst.instruction & 0x1ffe0)==0)||(((s3_inst.instruction & 0x1ffe0) == 0x1ffe0)&&(s3_inst.instruction & 0x003e) !=0))
+      if (((s3_inst.instruction & 0x1ffe0) == 0)
+         || (((s3_inst.instruction & 0x1ffe0) == 0x1ffe0)
+             && (s3_inst.instruction & 0x003e) != 0))
         {
           s3_inst.relax_inst |= (s3_inst.instruction >> 1) & 0x1f;
           s3_inst.relax_inst |= (((s3_inst.instruction >> 20) & 0x1f) << 5);
@@ -1613,11 +1608,13 @@ s3_do_rdsi16 (char *str)
         }
     }
   /* addi */
-  else  if (((s3_inst.instruction & 0x2000000) == 0x02000000)&& (s3_inst.relax_inst!=0x8000))
+  else  if (((s3_inst.instruction & 0x2000000) == 0x02000000) && (s3_inst.relax_inst!=0x8000))
     {
       /* rd : 0-16 ; imm <=0x7f  (6 bit<<1)*/
-      if ((((s3_inst.instruction >> 20) & 0x10) != 0x10) && 
-      (((s3_inst.instruction & 0x1ffc0)==0)||(((s3_inst.instruction & 0x1ffc0) == 0x1ffc0)&&(s3_inst.instruction & 0x007e) !=0)))
+      if ((((s3_inst.instruction >> 20) & 0x10) != 0x10)
+         && (((s3_inst.instruction & 0x1ffc0) == 0)
+             || (((s3_inst.instruction & 0x1ffc0) == 0x1ffc0)
+                 && (s3_inst.instruction & 0x007e) != 0)))
         {
           s3_inst.relax_inst |= (s3_inst.instruction >> 1) & 0x3f;
           s3_inst.relax_inst |= (((s3_inst.instruction >> 20) & 0xf) << 6);
@@ -1626,7 +1623,6 @@ s3_do_rdsi16 (char *str)
       else
         {
           s3_inst.relax_inst =0x8000;
-
         }
     }
 
@@ -1702,7 +1698,7 @@ s3_do_sub_rdrssi14 (char *str)     /* -(2^13)~((2^13)-1) */
 /* Handle bitclr.c/bitset.c/bittgl.c/slli.c/srai.c/srli.c/roli.c/rori.c/rolic.c.
    0~((2^14)-1) */
 static void
-s3_do_rdrsi5 (char *str) 
+s3_do_rdrsi5 (char *str)
 {
   s3_skip_whitespace (str);
 
@@ -1796,7 +1792,7 @@ s3_do_rdi16 (char *str)
       /* rd : 0-16 ;imm =0 -> can transform to addi!*/
       if ((((s3_inst.instruction >> 20) & 0x10) != 0x10) && ((s3_inst.instruction & 0x1ffff)==0))
         {
-         s3_inst.relax_inst =0x5c00; /* addi! */
+         s3_inst.relax_inst =0x5c00; /* addi! */
           s3_inst.relax_inst |= (s3_inst.instruction >> 1) & 0x3f;
           s3_inst.relax_inst |= (((s3_inst.instruction >> 20) & 0xf) << 6);
           s3_inst.relax_size = 2;
@@ -1915,7 +1911,7 @@ s3_do_xi5x (char *str)
 
   if (s3_inst.relax_inst != 0x8000)
     {
-      s3_inst.relax_inst |= ((s3_inst.instruction >> 15) & 0x1f) ;
+      s3_inst.relax_inst |= ((s3_inst.instruction >> 15) & 0x1f);
       s3_inst.relax_size = 2;
     }
 }
@@ -1937,8 +1933,7 @@ s3_do_rdrs (char *str)
         {
           /* mv! rd : 5bit , ra : 5bit */
           s3_inst.relax_inst |= ((s3_inst.instruction >> 15) & 0x1f)  | (((s3_inst.instruction >> 20) & 0x1f) << 5);
-          s3_inst.relax_size = 2;   
-         
+          s3_inst.relax_size = 2;
         }
       else if ((((s3_inst.instruction >> 15) & 0x10) == 0x0) && (((s3_inst.instruction >> 20) & 0x10) == 0))
         {
@@ -2219,7 +2214,7 @@ s3_dependency_type_from_insn (char *insn_name)
 
 static int
 s3_check_dependency (char *pre_insn, char *pre_reg,
-                  char *cur_insn, char *cur_reg, int *warn_or_error)
+                    char *cur_insn, char *cur_reg, int *warn_or_error)
 {
   int bubbles = 0;
   unsigned int i;
@@ -2277,7 +2272,7 @@ s3_build_one_frag (struct s3_score_it one_inst)
 
   p = frag_var (rs_machine_dependent, relax_size + s3_RELAX_PAD_BYTE, 0,
                 s3_RELAX_ENCODE (one_inst.size, one_inst.relax_size,
-                              one_inst.type, 0, 0, relaxable_p),
+                                one_inst.type, 0, 0, relaxable_p),
                 NULL, 0, NULL);
 
   if (relaxable_p)
@@ -2337,7 +2332,7 @@ s3_handle_dependency (struct s3_score_it *theinst)
       strcpy (pre_insn, s3_dependency_vector[i].name);
 
       bubbles = s3_check_dependency (pre_insn, s3_dependency_vector[i].reg,
-                                  cur_insn, s3_dependency_vector[0].reg, &warn_or_error);
+                                    cur_insn, s3_dependency_vector[0].reg, &warn_or_error);
       remainder_bubbles = bubbles - i + 1;
 
       if (remainder_bubbles > 0)
@@ -2385,9 +2380,9 @@ s3_handle_dependency (struct s3_score_it *theinst)
              if (warn_or_error)
                {
                   as_bad (_("data dependency: %s %s -- %s %s  (%d/%d bubble)"),
-                           s3_dependency_vector[i].name, s3_dependency_vector[i].reg,
-                           s3_dependency_vector[0].name, s3_dependency_vector[0].reg,
-                           remainder_bubbles, bubbles);
+                         s3_dependency_vector[i].name, s3_dependency_vector[i].reg,
+                         s3_dependency_vector[0].name, s3_dependency_vector[0].reg,
+                         remainder_bubbles, bubbles);
                }
              else
                {
@@ -2509,8 +2504,8 @@ s3_adjust_paritybit (bfd_vma m_code, enum insn_class i_class)
       m_code_middle = m_code & 0x3fff8000;
       m_code_low = m_code & 0x00007fff;
       result = pb_high | (m_code_high << 2) |
-               pb_middle | (m_code_middle << 1) |
-               pb_low | m_code_low;
+       pb_middle | (m_code_middle << 1) |
+       pb_low | m_code_low;
     }
   else if (i_class == INSN_CLASS_32 || i_class == INSN_CLASS_SYN)
     {
@@ -2563,7 +2558,7 @@ s3_gen_insn_frag (struct s3_score_it *part_1, struct s3_score_it *part_2)
   if (pce_p)
     {
       backup_inst1.instruction = ((backup_inst1.instruction & 0x7FFF) << 15)
-                                  | (inst2->instruction & 0x7FFF);
+       | (inst2->instruction & 0x7FFF);
       backup_inst1.instruction = s3_adjust_paritybit (backup_inst1.instruction, INSN_CLASS_PCE);
       backup_inst1.relax_inst = 0x8000;
       backup_inst1.size = s3_INSN_SIZE;
@@ -2573,7 +2568,7 @@ s3_gen_insn_frag (struct s3_score_it *part_1, struct s3_score_it *part_2)
   else
     {
       backup_inst1.instruction = s3_adjust_paritybit (backup_inst1.instruction,
-                                                  s3_GET_INSN_CLASS (backup_inst1.type));
+                                                     s3_GET_INSN_CLASS (backup_inst1.type));
     }
 
   if (backup_inst1.relax_size != 0)
@@ -2617,19 +2612,19 @@ s3_gen_insn_frag (struct s3_score_it *part_1, struct s3_score_it *part_2)
     {
       if (inst1->reloc.type != BFD_RELOC_NONE)
        s3_fix_new_score (frag_now, p - frag_now->fr_literal,
-                      inst1->size, &inst1->reloc.exp,
-                      inst1->reloc.pc_rel, inst1->reloc.type);
+                         inst1->size, &inst1->reloc.exp,
+                         inst1->reloc.pc_rel, inst1->reloc.type);
 
       if (inst2->reloc.type != BFD_RELOC_NONE)
        s3_fix_new_score (frag_now, p - frag_now->fr_literal + 2,
-                      inst2->size, &inst2->reloc.exp, inst2->reloc.pc_rel, inst2->reloc.type);
+                         inst2->size, &inst2->reloc.exp, inst2->reloc.pc_rel, inst2->reloc.type);
     }
   else
     {
       if (backup_inst1.reloc.type != BFD_RELOC_NONE)
        s3_fix_new_score (frag_now, p - frag_now->fr_literal,
-                      backup_inst1.size, &backup_inst1.reloc.exp,
-                      backup_inst1.reloc.pc_rel, backup_inst1.reloc.type);
+                         backup_inst1.size, &backup_inst1.reloc.exp,
+                         backup_inst1.reloc.pc_rel, backup_inst1.reloc.type);
     }
 
   /* relax_size may be 2, 4, 12 or 0, 0 indicates no relaxation.  */
@@ -2638,7 +2633,7 @@ s3_gen_insn_frag (struct s3_score_it *part_1, struct s3_score_it *part_2)
 
   p = frag_var (rs_machine_dependent, relax_size + s3_RELAX_PAD_BYTE, 0,
                 s3_RELAX_ENCODE (backup_inst1.size, backup_inst1.relax_size,
-                              backup_inst1.type, 0, 0, relaxable_p),
+                                backup_inst1.type, 0, 0, relaxable_p),
                 backup_inst1.reloc.exp.X_add_symbol, 0, NULL);
 
   if (relaxable_p)
@@ -2940,12 +2935,10 @@ s3_do_ldst_insn (char *str)
   int conflict_reg;
   int value;
   char * temp;
-  char *strbak;
   char *dataptr;
   int reg;
   int ldst_idx = 0;
 
-  strbak = str;
   s3_skip_whitespace (str);
 
   if (((conflict_reg = s3_reg_required_here (&str, 20, s3_REG_TYPE_SCORE)) == (int) s3_FAIL)
@@ -3075,9 +3068,9 @@ s3_do_ldst_insn (char *str)
 
               /* lw/lh/lbu/sw/sh/sb, offset = 0, relax to 16 bit instruction.  */
               /* if ((ldst_idx == INSN_LBU)
-                  || (ldst_idx == INSN_LH)
-                  || (ldst_idx == INSN_LW)
-                  || (ldst_idx == INSN_SB) || (ldst_idx == INSN_SH) || (ldst_idx == INSN_SW))*/
+                || (ldst_idx == INSN_LH)
+                || (ldst_idx == INSN_LW)
+                || (ldst_idx == INSN_SB) || (ldst_idx == INSN_SH) || (ldst_idx == INSN_SW))*/
               if ( (ldst_idx == INSN_LW)|| (ldst_idx == INSN_SW))
                 {
                   /* ra only 3 bit , rd only 4 bit for lw! and sw! */
@@ -3410,8 +3403,7 @@ s3_do_ldst_cop (char *str)
 static void
 s3_do16_ldst_insn (char *str)
 {
-  int conflict_reg=0;
-  char * temp;
+  int conflict_reg = 0;
   s3_skip_whitespace (str);
 
   if ((s3_reglow_required_here (&str, 8) == (int) s3_FAIL) || (s3_skip_past_comma (&str) == (int) s3_FAIL))
@@ -3428,12 +3420,12 @@ s3_do16_ldst_insn (char *str)
       if (conflict_reg&0x8)
         {
           sprintf (s3_err_msg,  _("invalid register number: %d is not in [r0--r7]"),conflict_reg);
-          s3_inst.error=s3_err_msg;
-          return ;
+          s3_inst.error = s3_err_msg;
+          return;
         }
 
       s3_skip_whitespace (str);
-      temp = str + 1;    /* The latter will process decimal/hex expression.  */
+
       if (*str == ']')
         {
           str++;
@@ -3464,33 +3456,32 @@ s3_do16_ldst_insn (char *str)
               data_type = _IMM5_RSHIFT_2;
               value = s3_validate_immediate (s3_inst.reloc.exp.X_add_number, data_type, 0);
               if (value == (int) s3_FAIL)
-              {
-               if (data_type < 30)
-                 sprintf (s3_err_msg,
-                   _("invalid constant: %d bit expression not in range %d..%d"),
-                   s3_score_df_range[data_type].bits,
-                   s3_score_df_range[data_type].range[0], s3_score_df_range[data_type].range[1]);
+               {
+                 if (data_type < 30)
+                   sprintf (s3_err_msg,
+                            _("invalid constant: %d bit expression not in range %d..%d"),
+                            s3_score_df_range[data_type].bits,
+                            s3_score_df_range[data_type].range[0], s3_score_df_range[data_type].range[1]);
                   s3_inst.error = s3_err_msg;
                  return;
                }
-              if (value &0x3)
+              if (value & 0x3)
                 {
                   sprintf (s3_err_msg,  _("invalid constant: %d is not word align integer"),value);
-                  s3_inst.error=s3_err_msg;
-                  return ;
+                  s3_inst.error = s3_err_msg;
+                  return;
                 }
 
-              value >>=2;
+              value >>= 2;
               s3_inst.instruction |= value;
             }
         }
-   
     }
   else
     {
       sprintf (s3_err_msg,  _("missing ["));
-      s3_inst.error=s3_err_msg;
-      return ;
+      s3_inst.error = s3_err_msg;
+      return;
     }
 }
 
@@ -3648,7 +3639,7 @@ s3_do_or48 (char *str)
     return;
 }
 
-static void 
+static void
 s3_do_mbitclr (char *str)
 {
   int val;
@@ -3657,7 +3648,7 @@ s3_do_mbitclr (char *str)
   if (*str != '[')
     {
       sprintf (s3_err_msg,  _("missing ["));
-      s3_inst.error=s3_err_msg;
+      s3_inst.error = s3_err_msg;
       return;
     }
   str++;
@@ -3678,7 +3669,7 @@ s3_do_mbitclr (char *str)
   if (*str != ']')
     {
       sprintf (s3_err_msg,  _("missing ]"));
-      s3_inst.error=s3_err_msg;
+      s3_inst.error = s3_err_msg;
       return;
     }
   str++;
@@ -3689,11 +3680,11 @@ s3_do_mbitclr (char *str)
 
   /* Set imm11 to opcode.  */
   s3_inst.instruction |= (val & 0x1)
-                      | (((val >> 1 ) & 0x7) << 7)
-                      | (((val >> 4 ) & 0x1f) << 20);
+    | (((val >> 1 ) & 0x7) << 7)
+    | (((val >> 4 ) & 0x1f) << 20);
 }
 
-static void 
+static void
 s3_do_mbitset (char *str)
 {
   int val;
@@ -3702,7 +3693,7 @@ s3_do_mbitset (char *str)
   if (*str != '[')
     {
       sprintf (s3_err_msg,  _("missing ["));
-      s3_inst.error=s3_err_msg;
+      s3_inst.error = s3_err_msg;
       return;
     }
   str++;
@@ -3723,7 +3714,7 @@ s3_do_mbitset (char *str)
   if (*str != ']')
     {
       sprintf (s3_err_msg,  _("missing ]"));
-      s3_inst.error=s3_err_msg;
+      s3_inst.error = s3_err_msg;
       return;
     }
   str++;
@@ -3734,8 +3725,8 @@ s3_do_mbitset (char *str)
 
   /* Set imm11 to opcode.  */
   s3_inst.instruction |= (val & 0x1)
-                      | (((val >> 1 ) & 0x7) << 7)
-                      | (((val >> 4 ) & 0x1f) << 20);
+    | (((val >> 1 ) & 0x7) << 7)
+    | (((val >> 4 ) & 0x1f) << 20);
 }
 
 static void
@@ -3746,7 +3737,7 @@ s3_do16_slli_srli (char *str)
   if ((s3_reglow_required_here (&str, 5) == (int) s3_FAIL)
       || (s3_skip_past_comma (&str) == (int) s3_FAIL)
       || s3_data_op2 (&str, 0, _IMM5) == (int) s3_FAIL
-      || s3_end_of_line (str) == (int) s3_FAIL) 
+      || s3_end_of_line (str) == (int) s3_FAIL)
     return;
 }
 
@@ -3758,7 +3749,7 @@ s3_do16_ldiu (char *str)
   if ((s3_reg_required_here (&str, 5,s3_REG_TYPE_SCORE) == (int) s3_FAIL)
       || (s3_skip_past_comma (&str) == (int) s3_FAIL)
       || s3_data_op2 (&str, 0, _IMM5) == (int) s3_FAIL
-      || s3_end_of_line (str) == (int) s3_FAIL) 
+      || s3_end_of_line (str) == (int) s3_FAIL)
     return;
 }
 
@@ -3767,7 +3758,7 @@ s3_do16_push_pop (char *str)
 {
   s3_skip_whitespace (str);
   if ((s3_reg_required_here (&str, 0, s3_REG_TYPE_SCORE)) == (int) s3_FAIL
-      || s3_end_of_line (str) == (int) s3_FAIL) 
+      || s3_end_of_line (str) == (int) s3_FAIL)
     return;
 }
 
@@ -3780,17 +3771,17 @@ s3_do16_rpush (char *str)
   if ((reg = (s3_reg_required_here (&str, 5, s3_REG_TYPE_SCORE))) == (int) s3_FAIL
       || s3_skip_past_comma (&str) == (int) s3_FAIL
       || s3_data_op2 (&str, 0, _IMM5_MULTI_LOAD) == (int) s3_FAIL
-      || s3_end_of_line (str) == (int) s3_FAIL) 
+      || s3_end_of_line (str) == (int) s3_FAIL)
     return;
 
   /* 0: indicate 32.
      1: invalide value.
      2: to 31: normal value.  */
-  val = s3_inst.instruction & 0x1f; 
+  val = s3_inst.instruction & 0x1f;
   if (val == 1)
     {
-      s3_inst.error = _("imm5 should >= 2"); 
-      return; 
+      s3_inst.error = _("imm5 should >= 2");
+      return;
     }
   if (reg >= 32)
     {
@@ -3808,7 +3799,7 @@ s3_do16_rpop (char *str)
   if ((reg = (s3_reg_required_here (&str, 5, s3_REG_TYPE_SCORE))) == (int) s3_FAIL
       || s3_skip_past_comma (&str) == (int) s3_FAIL
       || s3_data_op2 (&str, 0, _IMM5_MULTI_LOAD) == (int) s3_FAIL
-      || s3_end_of_line (str) == (int) s3_FAIL) 
+      || s3_end_of_line (str) == (int) s3_FAIL)
     return;
 
   /* 0: indicate 32.
@@ -3826,7 +3817,7 @@ s3_do16_rpop (char *str)
       s3_inst.error = _("reg should <= 31");
       return;
     }
-  else 
+  else
     {
       if ((reg + val) <= 32)
         reg = reg + val - 1;
@@ -3984,8 +3975,8 @@ s3_do_ldst_atomic (char *str)
 
 static void
 s3_build_relax_frag (struct s3_score_it fix_insts[s3_RELAX_INST_NUM], int fix_num ATTRIBUTE_UNUSED,
-                  struct s3_score_it var_insts[s3_RELAX_INST_NUM], int var_num,
-                  symbolS *add_symbol)
+                    struct s3_score_it var_insts[s3_RELAX_INST_NUM], int var_num,
+                    symbolS *add_symbol)
 {
   int i;
   char *p;
@@ -4004,7 +3995,7 @@ s3_build_relax_frag (struct s3_score_it fix_insts[s3_RELAX_INST_NUM], int fix_nu
     {
       inst_main.relax_size += var_insts[i].size;
       var_insts[i].instruction = s3_adjust_paritybit (var_insts[i].instruction,
-                                                   s3_GET_INSN_CLASS (var_insts[i].type));
+                                                     s3_GET_INSN_CLASS (var_insts[i].type));
     }
 
   /* Check data dependency.  */
@@ -4027,7 +4018,7 @@ s3_build_relax_frag (struct s3_score_it fix_insts[s3_RELAX_INST_NUM], int fix_nu
 
   if (inst_main.reloc.type != BFD_RELOC_NONE)
     fixp = s3_fix_new_score (frag_now, p - frag_now->fr_literal, inst_main.size,
-                         &inst_main.reloc.exp, inst_main.reloc.pc_rel, inst_main.reloc.type);
+                            &inst_main.reloc.exp, inst_main.reloc.pc_rel, inst_main.reloc.type);
 
   frag_now->tc_frag_data.fixp = fixp;
   cur_fixp = frag_now->tc_frag_data.fixp;
@@ -4045,8 +4036,8 @@ s3_build_relax_frag (struct s3_score_it fix_insts[s3_RELAX_INST_NUM], int fix_nu
       if (var_insts[i].reloc.type != BFD_RELOC_NONE)
         {
           fixp = s3_fix_new_score (frag_now, where, var_insts[i].size,
-                                &var_insts[i].reloc.exp, var_insts[i].reloc.pc_rel,
-                                var_insts[i].reloc.type);
+                                  &var_insts[i].reloc.exp, var_insts[i].reloc.pc_rel,
+                                  var_insts[i].reloc.type);
           if (fixp)
             {
               if (cur_fixp)
@@ -4065,7 +4056,7 @@ s3_build_relax_frag (struct s3_score_it fix_insts[s3_RELAX_INST_NUM], int fix_nu
 
   p = frag_var (rs_machine_dependent, inst_main.relax_size + s3_RELAX_PAD_BYTE, 0,
                 s3_RELAX_ENCODE (inst_main.size, inst_main.relax_size, inst_main.type,
-                0, inst_main.size, 0), add_symbol, 0, NULL);
+                                0, inst_main.size, 0), add_symbol, 0, NULL);
 
   /* Write fr_var part.
      no calling s3_gen_insn_frag, no fixS will be generated.  */
@@ -4100,11 +4091,11 @@ s3_build_la_pic (int reg_rd, expressionS exp)
       fix_num = 1;
       var_num = 2;
 
-      /* For an external symbol, only one insn is generated; 
+      /* For an external symbol, only one insn is generated;
          For a local symbol, two insns are generated.  */
       /* Fix part
          For an external symbol: lw rD, <sym>($gp)
-                                 (BFD_RELOC_SCORE_GOT15 or BFD_RELOC_SCORE_CALL15)  */
+        (BFD_RELOC_SCORE_GOT15 or BFD_RELOC_SCORE_CALL15)  */
       sprintf (tmp, "lw_pic r%d, %s", reg_rd, add_symbol->bsym->name);
       if (s3_append_insn (tmp, FALSE) == (int) s3_FAIL)
        return;
@@ -4213,8 +4204,8 @@ s3_build_la_pic (int reg_rd, expressionS exp)
       if (s3_append_insn (tmp, TRUE) == (int) s3_FAIL)
        return;
 
-     /* Set bwarn as -1, so macro instruction itself will not be generated frag.  */
-     s3_inst.bwarn = -1;
+      /* Set bwarn as -1, so macro instruction itself will not be generated frag.  */
+      s3_inst.bwarn = -1;
     }
 
   s3_nor1 = r1_bak;
@@ -4488,6 +4479,7 @@ s3_exp_macro_ldst_abs (char *str)
 
   s3_nor1 = r1_bak;
 }
+
 /* Handle bcmpeq / bcmpne  */
 static void
 s3_do_macro_bcmp (char *str)
@@ -4495,29 +4487,29 @@ s3_do_macro_bcmp (char *str)
   int reg_a , reg_b;
   char keep_data[s3_MAX_LITERAL_POOL_SIZE];
   char* ptemp;
-  int i=0;
+  int i = 0;
   struct s3_score_it inst_expand[2];
   struct s3_score_it inst_main;
 
-
+  memset (inst_expand, 0, sizeof inst_expand);
   s3_skip_whitespace (str);
   if (( reg_a = s3_reg_required_here (&str, 15, s3_REG_TYPE_SCORE)) == (int) s3_FAIL
       || s3_skip_past_comma (&str) == (int) s3_FAIL
       ||(reg_b = s3_reg_required_here (&str, 10, s3_REG_TYPE_SCORE)) == (int) s3_FAIL
       || s3_skip_past_comma (&str) == (int) s3_FAIL)
-      return;
-  ptemp =str;
-  while(*ptemp!=0)
-  {
-       keep_data[i]=*ptemp;
-       i++;
-       ptemp++;
-  }
-  keep_data[i]=0;
-  if (s3_my_get_expression (&s3_inst.reloc.exp, &str) == (int) s3_FAIL 
-      ||reg_b ==0
+    return;
+  ptemp = str;
+  while (*ptemp != 0)
+    {
+      keep_data[i] = *ptemp;
+      i++;
+      ptemp++;
+    }
+  keep_data[i] = 0;
+  if (s3_my_get_expression (&s3_inst.reloc.exp, &str) == (int) s3_FAIL
+      ||reg_b == 0
       || s3_end_of_line (str) == (int) s3_FAIL)
-    return ; 
+    return;
   else if (s3_inst.reloc.exp.X_add_symbol == 0)
     {
       s3_inst.error = _("lacking label  ");
@@ -4525,19 +4517,21 @@ s3_do_macro_bcmp (char *str)
     }
   else
     {
-      char append_str[s3_MAX_LITERAL_POOL_SIZE];      
+      char append_str[s3_MAX_LITERAL_POOL_SIZE];
       s3_SET_INSN_ERROR (NULL);
-      
+
       s3_inst.reloc.type = BFD_RELOC_SCORE_BCMP;
       s3_inst.reloc.pc_rel = 1;
       bfd_signed_vma val = s3_inst.reloc.exp.X_add_number;
 
       /* Branch 32  offset field : 20 bit, 16 bit branch offset field : 8 bit.  */
-      s3_inst.instruction |= ((s3_inst.reloc.exp.X_add_number>>1) & 0x1) | ((s3_inst.reloc.exp.X_add_number>>2) & 0x7)<<7 |((s3_inst.reloc.exp.X_add_number>>5) & 0x1f)<<20; 
+      s3_inst.instruction |= ((s3_inst.reloc.exp.X_add_number >> 1) & 0x1)
+       | ((s3_inst.reloc.exp.X_add_number >> 2) & 0x7) << 7
+       | ((s3_inst.reloc.exp.X_add_number >> 5) & 0x1f) << 20;
 
       /* Check and set offset.  */
       if (((val & 0xfffffe00) != 0)
-           && ((val & 0xfffffe00) != 0xfffffe00))
+         && ((val & 0xfffffe00) != 0xfffffe00))
         {
           /* support bcmp --> cmp!+beq (bne) */
           if (s3_score_pic == s3_NO_PIC)
@@ -4551,33 +4545,33 @@ s3_do_macro_bcmp (char *str)
                 sprintf (&append_str[1], "bne %s", keep_data);
               if (s3_append_insn (&append_str[1], TRUE) == (int) s3_FAIL)
                 return;
-              }
-            else
-              {
-                gas_assert (s3_inst.reloc.exp.X_add_symbol);
-              }
-            /* Set bwarn as -1, so macro instruction itself will not be generated frag.  */
-            s3_inst.bwarn = -1;
-            return;
+           }
+         else
+           {
+             gas_assert (s3_inst.reloc.exp.X_add_symbol);
+           }
+         /* Set bwarn as -1, so macro instruction itself will not be generated frag.  */
+         s3_inst.bwarn = -1;
+         return;
         }
       else
         {
           val >>= 1;
           s3_inst.instruction |= (val & 0x1)
-                              | (((val >> 1) & 0x7) << 7)
-                              | (((val >> 4) & 0x1f) << 20);
+           | (((val >> 1) & 0x7) << 7)
+           | (((val >> 4) & 0x1f) << 20);
         }
 
       /* Backup s3_inst.  */
       memcpy (&inst_main, &s3_inst, sizeof (struct s3_score_it));
 
-      if (s3_score_pic == s3_NO_PIC) 
+      if (s3_score_pic == s3_NO_PIC)
         {
           sprintf (&append_str[0], "cmp! r%d, r%d", reg_a, reg_b);
           if (s3_append_insn (&append_str[0], FALSE) == (int) s3_FAIL)
             return;
           memcpy (&inst_expand[0], &s3_inst, sizeof (struct s3_score_it));
-  
+
           if ((inst_main.instruction & 0x3e00007e) == 0x0000004c)
             sprintf (&append_str[1], "beq %s", keep_data);
           else
@@ -4597,17 +4591,17 @@ s3_do_macro_bcmp (char *str)
       inst_main.instruction = s3_adjust_paritybit (inst_main.instruction, s3_GET_INSN_CLASS (inst_main.type));
 
       for (i = 0; i < 2; i++)
-        inst_expand[i].instruction = s3_adjust_paritybit (inst_expand[i].instruction, 
+        inst_expand[i].instruction = s3_adjust_paritybit (inst_expand[i].instruction,
                                                           s3_GET_INSN_CLASS (inst_expand[i].type));
       /* Check data dependency.  */
       s3_handle_dependency (&inst_main);
       /* Start a new frag if frag_now is not empty.  */
       if (frag_now_fix () != 0)
-      {
-       if (!frag_now->tc_frag_data.is_insn)
-         frag_wane (frag_now);
-       frag_new (0);
-      }
+       {
+         if (!frag_now->tc_frag_data.is_insn)
+           frag_wane (frag_now);
+         frag_new (0);
+       }
       frag_grow (20);
 
       /* Write fr_fix part.  */
@@ -4616,10 +4610,10 @@ s3_do_macro_bcmp (char *str)
       s3_md_number_to_chars (p, inst_main.instruction, inst_main.size);
 
       if (inst_main.reloc.type != BFD_RELOC_NONE)
-      {
-       s3_fix_new_score (frag_now, p - frag_now->fr_literal, inst_main.size,
-                          &inst_main.reloc.exp, inst_main.reloc.pc_rel, inst_main.reloc.type);
-      }
+       {
+         s3_fix_new_score (frag_now, p - frag_now->fr_literal, inst_main.size,
+                           &inst_main.reloc.exp, inst_main.reloc.pc_rel, inst_main.reloc.type);
+       }
 #ifdef OBJ_ELF
       dwarf2_emit_insn (inst_main.size);
 #endif
@@ -4639,36 +4633,38 @@ s3_do_macro_bcmp (char *str)
 
       /* Set bwarn as -1, so macro instruction itself will not be generated frag.  */
       s3_inst.bwarn = -1;
-     }
+    }
 }
 
 /* Handle bcmpeqz / bcmpnez  */
 static void
 s3_do_macro_bcmpz (char *str)
 {
-  int reg_a ;
+  int reg_a;
   char keep_data[s3_MAX_LITERAL_POOL_SIZE];
   char* ptemp;
-  int i=0;
+  int i = 0;
   struct s3_score_it inst_expand[2];
   struct s3_score_it inst_main;
 
+  memset (inst_expand, 0, sizeof inst_expand);
   s3_skip_whitespace (str);
   if (( reg_a = s3_reg_required_here (&str, 15, s3_REG_TYPE_SCORE)) == (int) s3_FAIL
-      || s3_skip_past_comma (&str) == (int) s3_FAIL   )
+      || s3_skip_past_comma (&str) == (int) s3_FAIL)
     return;
-  ptemp =str;
-  while(*ptemp!=0)
-  {
-       keep_data[i]=*ptemp;
-       i++;
-       ptemp++;
-  }
-  keep_data[i]=0;
-  if ( s3_my_get_expression (&s3_inst.reloc.exp, &str) == (int) s3_FAIL 
-      || s3_end_of_line (str) == (int) s3_FAIL)
-    return ;
+  ptemp = str;
+  while (*ptemp != 0)
+    {
+      keep_data[i] = *ptemp;
+      i++;
+      ptemp++;
+    }
 
+  keep_data[i] = 0;
+
+  if (s3_my_get_expression (&s3_inst.reloc.exp, &str) == (int) s3_FAIL
+      || s3_end_of_line (str) == (int) s3_FAIL)
+    return;
   else if (s3_inst.reloc.exp.X_add_symbol == 0)
     {
       s3_inst.error = _("lacking label  ");
@@ -4676,18 +4672,18 @@ s3_do_macro_bcmpz (char *str)
     }
   else
     {
-      char append_str[s3_MAX_LITERAL_POOL_SIZE];      
+      char append_str[s3_MAX_LITERAL_POOL_SIZE];
       s3_SET_INSN_ERROR (NULL);
       s3_inst.reloc.type = BFD_RELOC_SCORE_BCMP;
-      s3_inst.reloc.pc_rel = 1;    
+      s3_inst.reloc.pc_rel = 1;
       bfd_signed_vma val = s3_inst.reloc.exp.X_add_number;
 
       /* Branch 32  offset field : 20 bit, 16 bit branch offset field : 8 bit.  */
-      s3_inst.instruction |= ((s3_inst.reloc.exp.X_add_number>>1) & 0x1) | ((s3_inst.reloc.exp.X_add_number>>2) & 0x7)<<7 |((s3_inst.reloc.exp.X_add_number>>5) & 0x1f)<<20; 
+      s3_inst.instruction |= ((s3_inst.reloc.exp.X_add_number>>1) & 0x1) | ((s3_inst.reloc.exp.X_add_number>>2) & 0x7)<<7 |((s3_inst.reloc.exp.X_add_number>>5) & 0x1f)<<20;
 
       /* Check and set offset.  */
       if (((val & 0xfffffe00) != 0)
-           && ((val & 0xfffffe00) != 0xfffffe00))
+         && ((val & 0xfffffe00) != 0xfffffe00))
         {
           if (s3_score_pic == s3_NO_PIC)
             {
@@ -4713,14 +4709,14 @@ s3_do_macro_bcmpz (char *str)
         {
           val >>= 1;
           s3_inst.instruction |= (val & 0x1)
-                              | (((val >> 1) & 0x7) << 7)
-                              | (((val >> 4) & 0x1f) << 20);
+           | (((val >> 1) & 0x7) << 7)
+           | (((val >> 4) & 0x1f) << 20);
         }
 
       /* Backup s3_inst.  */
       memcpy (&inst_main, &s3_inst, sizeof (struct s3_score_it));
-      
-      if (s3_score_pic == s3_NO_PIC) 
+
+      if (s3_score_pic == s3_NO_PIC)
         {
           sprintf (&append_str[0], "cmpi! r%d, 0", reg_a);
           if (s3_append_insn (&append_str[0], FALSE) == (int) s3_FAIL)
@@ -4745,16 +4741,17 @@ s3_do_macro_bcmpz (char *str)
       inst_main.instruction = s3_adjust_paritybit (inst_main.instruction, s3_GET_INSN_CLASS (inst_main.type));
 
       for (i = 0; i < 2; i++)
-        inst_expand[i].instruction = s3_adjust_paritybit (inst_expand[i].instruction , s3_GET_INSN_CLASS (inst_expand[i].type));
+        inst_expand[i].instruction = s3_adjust_paritybit (inst_expand[i].instruction ,
+                                                         s3_GET_INSN_CLASS (inst_expand[i].type));
       /* Check data dependency.  */
       s3_handle_dependency (&inst_main);
       /* Start a new frag if frag_now is not empty.  */
       if (frag_now_fix () != 0)
-      {
-       if (!frag_now->tc_frag_data.is_insn)
-         frag_wane (frag_now);
-       frag_new (0);
-      }
+       {
+         if (!frag_now->tc_frag_data.is_insn)
+           frag_wane (frag_now);
+         frag_new (0);
+       }
       frag_grow (20);
 
       /* Write fr_fix part.  */
@@ -4763,10 +4760,10 @@ s3_do_macro_bcmpz (char *str)
       s3_md_number_to_chars (p, inst_main.instruction, inst_main.size);
 
       if (inst_main.reloc.type != BFD_RELOC_NONE)
-      {
-       s3_fix_new_score (frag_now, p - frag_now->fr_literal, inst_main.size,
-                          &inst_main.reloc.exp, inst_main.reloc.pc_rel, inst_main.reloc.type);
-      }
+       {
+         s3_fix_new_score (frag_now, p - frag_now->fr_literal, inst_main.size,
+                           &inst_main.reloc.exp, inst_main.reloc.pc_rel, inst_main.reloc.type);
+       }
 #ifdef OBJ_ELF
       dwarf2_emit_insn (inst_main.size);
 #endif
@@ -4786,7 +4783,7 @@ s3_do_macro_bcmpz (char *str)
 
       /* Set bwarn as -1, so macro instruction itself will not be generated frag.  */
       s3_inst.bwarn = -1;
-     }
+    }
 }
 
 static int
@@ -4819,12 +4816,12 @@ s3_nopic_need_relax (symbolS * sym, int before_relaxing)
           return 1;
         }
       else if ((!S_IS_DEFINED (sym) || S_IS_COMMON (sym)) && (0
-      /* We must defer this decision until after the whole file has been read,
-         since there might be a .extern after the first use of this symbol.  */
-               || (before_relaxing
-                   && S_GET_VALUE (sym) == 0)
-               || (S_GET_VALUE (sym) != 0
-                   && S_GET_VALUE (sym) <= s3_g_switch_value)))
+                                                             /* We must defer this decision until after the whole file has been read,
+                                                                since there might be a .extern after the first use of this symbol.  */
+                                                             || (before_relaxing
+                                                                 && S_GET_VALUE (sym) == 0)
+                                                             || (S_GET_VALUE (sym) != 0
+                                                                 && S_GET_VALUE (sym) <= s3_g_switch_value)))
         {
           return 0;
         }
@@ -4866,7 +4863,7 @@ s3_build_lwst_pic (int reg_rd, expressionS exp, const char *insn_name)
          For a local symbol, three insns are generated.  */
       /* Fix part
          For an external symbol: lw rD, <sym>($gp)
-                                 (BFD_RELOC_SCORE_GOT15)  */
+        (BFD_RELOC_SCORE_GOT15)  */
       sprintf (tmp, "lw_pic r1, %s", add_symbol->bsym->name);
       if (s3_append_insn (tmp, FALSE) == (int) s3_FAIL)
         return;
@@ -4999,8 +4996,8 @@ s3_do_macro_ldst_label (char *str)
       else
        {
           if ((s3_inst.reloc.exp.X_add_number <= 0x3fff)
-               && (s3_inst.reloc.exp.X_add_number >= -0x4000)
-               && (!s3_nopic_need_relax (s3_inst.reloc.exp.X_add_symbol, 1)))
+             && (s3_inst.reloc.exp.X_add_number >= -0x4000)
+             && (!s3_nopic_need_relax (s3_inst.reloc.exp.X_add_symbol, 1)))
            {
               int ldst_idx = 0;
 
@@ -5045,9 +5042,9 @@ s3_do_macro_ldst_label (char *str)
       /* Adjust instruction opcode and to be relaxed instruction opcode.  */
       inst_main.instruction = s3_adjust_paritybit (inst_main.instruction, s3_GET_INSN_CLASS (inst_main.type));
 
-      /* relax lw rd, label -> ldis rs, imm16 
-                               ori  rd, imm16
-                               lw rd, [rs, imm15] or lw! rd, [rs, imm5].  */
+      /* relax lw rd, label -> ldis rs, imm16
+        ori  rd, imm16
+        lw rd, [rs, imm15] or lw! rd, [rs, imm5].  */
       if (inst_expand[2].relax_size == 0)
         inst_main.relax_size = inst_expand[0].size + inst_expand[1].size + inst_expand[2].size;
       else
@@ -5056,7 +5053,7 @@ s3_do_macro_ldst_label (char *str)
       inst_main.type = Insn_GP;
 
       for (i = 0; i < 3; i++)
-       inst_expand[i].instruction = s3_adjust_paritybit (inst_expand[i].instruction, 
+       inst_expand[i].instruction = s3_adjust_paritybit (inst_expand[i].instruction,
                                                           s3_GET_INSN_CLASS (inst_expand[i].type));
 
       /* Check data dependency.  */
@@ -5079,7 +5076,7 @@ s3_do_macro_ldst_label (char *str)
       if (inst_main.reloc.type != BFD_RELOC_NONE)
         {
           s3_fix_new_score (frag_now, p - frag_now->fr_literal, inst_main.size,
-                         &inst_main.reloc.exp, inst_main.reloc.pc_rel, inst_main.reloc.type);
+                           &inst_main.reloc.exp, inst_main.reloc.pc_rel, inst_main.reloc.type);
         }
 
 #ifdef OBJ_ELF
@@ -5099,9 +5096,9 @@ s3_do_macro_ldst_label (char *str)
       s3_md_number_to_chars (p, inst_expand[1].instruction, inst_expand[1].size);
       p += inst_expand[1].size;
 
-      /* relax lw rd, label -> ldis rs, imm16 
-                               ori  rd, imm16
-                               lw rd, [rs, imm15] or lw! rd, [rs, imm5].  */
+      /* relax lw rd, label -> ldis rs, imm16
+        ori  rd, imm16
+        lw rd, [rs, imm15] or lw! rd, [rs, imm5].  */
       if (inst_expand[2].relax_size == 0)
         s3_md_number_to_chars (p, inst_expand[2].instruction, inst_expand[2].size);
       else
@@ -5202,7 +5199,7 @@ s3_do_jump (char *str)
     }
 
   if (!(s3_inst.reloc.exp.X_add_number >= -16777216
-      && s3_inst.reloc.exp.X_add_number <= 16777215))
+       && s3_inst.reloc.exp.X_add_number <= 16777215))
     {
       s3_inst.error = _("invalid constant: 25 bit expression not in range [-16777216, 16777215]");
       return;
@@ -5229,7 +5226,7 @@ s3_do_branch (char *str)
       return;
     }
   else if (!(s3_inst.reloc.exp.X_add_number >= -524288
-           && s3_inst.reloc.exp.X_add_number <= 524287))
+            && s3_inst.reloc.exp.X_add_number <= 524287))
     {
       s3_inst.error = _("invalid constant: 20 bit expression not in range -2^19..2^19");
       return;
@@ -5258,7 +5255,7 @@ static void
 s3_do16_branch (char *str)
 {
   if ((s3_my_get_expression (&s3_inst.reloc.exp, &str) == (int) s3_FAIL
-      || s3_end_of_line (str) == (int) s3_FAIL))
+       || s3_end_of_line (str) == (int) s3_FAIL))
     {
       ;
     }
@@ -5267,7 +5264,7 @@ s3_do16_branch (char *str)
       s3_inst.error = _("lacking label");
     }
   else if (!(s3_inst.reloc.exp.X_add_number >= -512
-           && s3_inst.reloc.exp.X_add_number <= 511))
+            && s3_inst.reloc.exp.X_add_number <= 511))
     {
       s3_inst.error = _("invalid constant: 10 bit expression not in range [-2^9, 2^9-1]");
     }
@@ -5311,8 +5308,8 @@ s3_pic_need_relax (symbolS *sym, asection *segtype)
        linkonce = TRUE;
 
       /* The GNU toolchain uses an extension for ELF: a section
-         beginning with the magic string .gnu.linkonce is a linkonce
-         section.  */
+        beginning with the magic string .gnu.linkonce is a linkonce
+        section.  */
       if (strncmp (segment_name (symsec), ".gnu.linkonce",
                   sizeof ".gnu.linkonce" - 1) == 0)
        linkonce = TRUE;
@@ -5320,9 +5317,9 @@ s3_pic_need_relax (symbolS *sym, asection *segtype)
 
   /* This must duplicate the test in adjust_reloc_syms.  */
   return (symsec != &bfd_und_section
-           && symsec != &bfd_abs_section
+         && symsec != &bfd_abs_section
          && ! bfd_is_com_section (symsec)
-           && !linkonce
+         && !linkonce
 #ifdef OBJ_ELF
          /* A global or weak symbol is treated as external.  */
          && (OUTPUT_FLAVOR != bfd_target_elf_flavour
@@ -5362,8 +5359,8 @@ s3_parse_pce_inst (char *insnstr)
     return;
 
   if (   ((pec_part_1.size == s3_INSN_SIZE) && (s3_inst.size == s3_INSN_SIZE))
-      || ((pec_part_1.size == s3_INSN_SIZE) && (s3_inst.size == s3_INSN16_SIZE))
-      || ((pec_part_1.size == s3_INSN16_SIZE) && (s3_inst.size == s3_INSN_SIZE)))
+        || ((pec_part_1.size == s3_INSN_SIZE) && (s3_inst.size == s3_INSN16_SIZE))
+        || ((pec_part_1.size == s3_INSN16_SIZE) && (s3_inst.size == s3_INSN_SIZE)))
     {
       s3_inst.error = _("pce instruction error (16 bit || 16 bit)'");
       sprintf (s3_inst.str, insnstr);
@@ -5380,7 +5377,7 @@ s3_do16_dsp (char *str)
 {
   int rd = 0;
 
-  /* Check 3d.  */ 
+  /* Check 3d.  */
   if (s3_score3d == 0)
     {
       s3_inst.error = _("score3d instruction.");
@@ -5404,7 +5401,7 @@ s3_do16_dsp (char *str)
 static void
 s3_do16_dsp2 (char *str)
 {
-  /* Check 3d.  */ 
+  /* Check 3d.  */
   if (s3_score3d == 0)
     {
       s3_inst.error = _("score3d instruction.");
@@ -5431,7 +5428,7 @@ s3_do16_dsp2 (char *str)
 static void
 s3_do_dsp (char *str)
 {
-  /* Check 3d.  */ 
+  /* Check 3d.  */
   if (s3_score3d == 0)
     {
       s3_inst.error = _("score3d instruction.");
@@ -5460,7 +5457,7 @@ s3_do_dsp2 (char *str)
 {
   int reg;
 
-  /* Check 3d.  */ 
+  /* Check 3d.  */
   if (s3_score3d == 0)
     {
       s3_inst.error = _("score3d instruction.");
@@ -5482,7 +5479,7 @@ s3_do_dsp2 (char *str)
     {
       /* Check mulr, mulur rd is even number.  */
       if (((s3_inst.instruction & 0x3e0003ff) == 0x00000340
-            || (s3_inst.instruction & 0x3e0003ff) == 0x00000342)
+          || (s3_inst.instruction & 0x3e0003ff) == 0x00000342)
           && (reg % 2))
         {
           s3_inst.error = _("rd must be even number.");
@@ -5509,7 +5506,7 @@ s3_do_dsp2 (char *str)
 static void
 s3_do_dsp3 (char *str)
 {
-  /* Check 3d.  */ 
+  /* Check 3d.  */
   if (s3_score3d == 0)
     {
       s3_inst.error = _("score3d instruction.");
@@ -5791,7 +5788,6 @@ s3_s_score_end (int x ATTRIBUTE_UNUSED)
   /* Generate a .pdr section.  */
   segT saved_seg = now_seg;
   subsegT saved_subseg = now_subseg;
-  valueT dot;
   expressionS exp;
   char *fragp;
 
@@ -5842,7 +5838,7 @@ s3_s_score_end (int x ATTRIBUTE_UNUSED)
 
   else
     {
-      dot = frag_now_fix ();
+      (void) frag_now_fix ();
       gas_assert (s3_pdr_seg);
       subseg_set (s3_pdr_seg, 0);
       /* Write the symbol.  */
@@ -6069,18 +6065,18 @@ s3_s_score_cpadd (int ignore ATTRIBUTE_UNUSED)
 }
 
 #ifndef TC_IMPLICIT_LCOMM_ALIGNMENT
-#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR)               \
-    do                                                         \
-    {                                                          \
-    if ((SIZE) >= 8)                                           \
-    (P2VAR) = 3;                                               \
-    else if ((SIZE) >= 4)                                      \
-    (P2VAR) = 2;                                               \
-    else if ((SIZE) >= 2)                                      \
-    (P2VAR) = 1;                                               \
-    else                                                       \
-    (P2VAR) = 0;                                               \
-    }                                                          \
+#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR)       \
+  do                                                   \
+    {                                                  \
+      if ((SIZE) >= 8)                                 \
+       (P2VAR) = 3;                                    \
+      else if ((SIZE) >= 4)                            \
+       (P2VAR) = 2;                                    \
+      else if ((SIZE) >= 2)                            \
+       (P2VAR) = 1;                                    \
+      else                                             \
+       (P2VAR) = 0;                                    \
+    }                                                  \
   while (0)
 #endif
 
@@ -6223,16 +6219,16 @@ s3_s_score_lcomm (int bytes_p)
   *p = c;
 
   if (
-#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT) \
+#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT)    \
      || defined (OBJ_BOUT) || defined (OBJ_MAYBE_BOUT))
 #ifdef BFD_ASSEMBLER
-       (OUTPUT_FLAVOR != bfd_target_aout_flavour
-        || (S_GET_OTHER (symbolP) == 0 && S_GET_DESC (symbolP) == 0)) &&
+      (OUTPUT_FLAVOR != bfd_target_aout_flavour
+       || (S_GET_OTHER (symbolP) == 0 && S_GET_DESC (symbolP) == 0)) &&
 #else
-       (S_GET_OTHER (symbolP) == 0 && S_GET_DESC (symbolP) == 0) &&
+      (S_GET_OTHER (symbolP) == 0 && S_GET_DESC (symbolP) == 0) &&
 #endif
 #endif
-       (S_GET_SEGMENT (symbolP) == bss_seg || (!S_IS_DEFINED (symbolP) && S_GET_VALUE (symbolP) == 0)))
+      (S_GET_SEGMENT (symbolP) == bss_seg || (!S_IS_DEFINED (symbolP) && S_GET_VALUE (symbolP) == 0)))
     {
       char *pfrag;
 
@@ -6323,7 +6319,7 @@ s3_build_score_ops_hsh (void)
       struct s3_asm_opcode *new_opcode;
       char *template_name;
       new_opcode = (struct s3_asm_opcode *)
-          obstack_alloc (&insn_obstack, sizeof (struct s3_asm_opcode));
+       obstack_alloc (&insn_obstack, sizeof (struct s3_asm_opcode));
       template_name = (char *) obstack_alloc (& insn_obstack, len + 1);
 
       strcpy (template_name, insn->template_name);
@@ -6352,8 +6348,8 @@ s3_build_dependency_insn_hsh (void)
       struct s3_insn_to_dependency *new_i2n;
 
       new_i2n = (struct s3_insn_to_dependency *)
-          obstack_alloc (&dependency_obstack,
-                         sizeof (struct s3_insn_to_dependency));
+       obstack_alloc (&dependency_obstack,
+                      sizeof (struct s3_insn_to_dependency));
       new_i2n->insn_name = (char *) obstack_alloc (&dependency_obstack,
                                                    len + 1);
 
@@ -6459,7 +6455,7 @@ s_score_cprestore (int ignore ATTRIBUTE_UNUSED)
 {
   if (score3)
     return s3_s_score_cprestore (ignore);
-  else 
+  else
     return s7_s_score_cprestore (ignore);
 }
 
@@ -6468,7 +6464,7 @@ s_score_gpword (int ignore ATTRIBUTE_UNUSED)
 {
   if (score3)
     return s3_s_score_gpword (ignore);
-  else 
+  else
     return s7_s_score_gpword (ignore);
 }
 
@@ -6477,7 +6473,7 @@ s_score_cpadd (int ignore ATTRIBUTE_UNUSED)
 {
   if (score3)
     return s3_s_score_cpadd (ignore);
-  else 
+  else
     return s7_s_score_cpadd (ignore);
 }
 
@@ -6486,7 +6482,7 @@ s_score_lcomm (int bytes_p)
 {
   if (score3)
     return s3_s_score_lcomm (bytes_p);
-  else 
+  else
     return s7_s_score_lcomm (bytes_p);
 }
 
@@ -6574,21 +6570,21 @@ s3_normal_chars_to_number (char *buf, int n)
   if (target_big_endian)
     {
       while (n--)
-        {       
+        {
           result <<= 8;
-          result |= (*where++ & 255); 
-        }       
+          result |= (*where++ & 255);
+        }
     }
   else
     {
       while (n--)
-        {       
+        {
           result <<= 8;
-          result |= (where[n] & 255); 
-        }       
+          result |= (where[n] & 255);
+        }
     }
 
-  return result; 
+  return result;
 }
 
 static void
@@ -6643,7 +6639,7 @@ s3_chars_to_number_littleendian (const void *p, int n)
 static void
 s3_md_number_to_chars (char *buf, valueT val, int n)
 {
-  if (!target_big_endian && n >= 4) 
+  if (!target_big_endian && n >= 4)
     s3_number_to_chars_littleendian (buf, val, n);
   else
     md_number_to_chars (buf, val, n);
@@ -6743,7 +6739,7 @@ s3_force_relocation (struct fix *fixp)
       || fixp->fx_r_type == BFD_RELOC_SCORE_JMP
       || fixp->fx_r_type == BFD_RELOC_SCORE_BRANCH
       || fixp->fx_r_type == BFD_RELOC_SCORE16_JMP
-      || fixp->fx_r_type == BFD_RELOC_SCORE16_BRANCH  
+      || fixp->fx_r_type == BFD_RELOC_SCORE16_BRANCH
       || fixp->fx_r_type == BFD_RELOC_SCORE_BCMP)
     {
       retval = 1;
@@ -6759,7 +6755,7 @@ s3_fix_adjustable (fixS * fixP)
       return 1;
     }
   else if (OUTPUT_FLAVOR == bfd_target_elf_flavour
-      && (S_IS_EXTERNAL (fixP->fx_addsy) || S_IS_WEAK (fixP->fx_addsy)))
+          && (S_IS_EXTERNAL (fixP->fx_addsy) || S_IS_WEAK (fixP->fx_addsy)))
     {
       return 0;
     }
@@ -6869,7 +6865,7 @@ s3_relax_branch_inst16 (fragS * fragp)
 
   value = offset + symbol_address - frag_addr;
 
-  if (relaxable_p 
+  if (relaxable_p
       && (!((value & 0xfffffe00) == 0 || (value & 0xfffffe00) == 0xfffffe00))
       && fragp->fr_fix == 2
       && (s->bsym != NULL)
@@ -6911,39 +6907,38 @@ s3_relax_cmpbranch_inst32 (fragS * fragp)
 
   inst_value = s3_md_chars_to_number (fragp->fr_literal, s3_INSN_SIZE);
   offset = (inst_value & 0x1)
-           | (((inst_value >> 7) & 0x7) << 1)
-           | (((inst_value >> 21) & 0x1f) << 4);
+    | (((inst_value >> 7) & 0x7) << 1)
+    | (((inst_value >> 21) & 0x1f) << 4);
   offset <<= 1;
   if ((offset & 0x200) == 0x200)
     offset |= 0xfffffe00;
 
   value = offset + symbol_address - frag_addr;
   /* change the order of judging rule is because
-     1.not defined symbol or common sysbol or external symbol will change 
-       bcmp to cmp!+beq/bne ,here need to record fragp->fr_opcode
-     2.if the flow is as before : it will results to recursive loop 
+     1.not defined symbol or common sysbol or external symbol will change
+     bcmp to cmp!+beq/bne ,here need to record fragp->fr_opcode
+     2.if the flow is as before : it will results to recursive loop
   */
   if (fragp->fr_fix == 6)
-    { 
+    {
       /* Have already relaxed!  Just return 0 to terminate the loop.  */
       return 0;
     }
   /* need to translate when extern or not defind or common sysbol */
-  else if ((relaxable_p 
-      && (!((value & 0xfffffe00) == 0 || (value & 0xfffffe00) == 0xfffffe00))
-      && fragp->fr_fix == 4
-      && (s->bsym != NULL))
-      || !S_IS_DEFINED (s)
-       ||S_IS_COMMON (s)
-        ||S_IS_EXTERNAL (s))
+  else if ((relaxable_p
+           && (!((value & 0xfffffe00) == 0 || (value & 0xfffffe00) == 0xfffffe00))
+           && fragp->fr_fix == 4
+           && (s->bsym != NULL))
+          || !S_IS_DEFINED (s)
+          ||S_IS_COMMON (s)
+          ||S_IS_EXTERNAL (s))
     {
       fragp->fr_opcode = fragp->fr_literal + s3_RELAX_RELOC1 (fragp->fr_subtype);
       fragp->fr_fix = 6;
       return 2;
     }
-  
   else
-    { 
+    {
       /* Never relax.  Modify fr_opcode to NULL to verify it's value in
          md_apply_fix.  */
       fragp->fr_opcode = NULL;
@@ -6971,7 +6966,7 @@ s3_relax_other_inst32 (fragS * fragp)
 static int
 s3_relax_gp_and_pic_inst32 (void)
 {
-  /* md_estimate_size_before_relax has already relaxed s3_GP and s3_PIC 
+  /* md_estimate_size_before_relax has already relaxed s3_GP and s3_PIC
      instructions.  We don't change relax size here.  */
   return 0;
 }
@@ -6986,11 +6981,11 @@ s3_relax_frag (asection * sec ATTRIBUTE_UNUSED, fragS * fragp, long stretch ATTR
   if ((fragp->fr_address) % 2 != 0)
     {
       if ((fragp->fr_address + fragp->insn_addr) % 2 != 0)
-      {
+       {
           fragp->insn_addr = 1;
           grows += 1;
           adjust_align_p = 1;
-      }
+       }
     }
 
   switch (s3_RELAX_TYPE (fragp->fr_subtype))
@@ -7167,9 +7162,9 @@ s3_apply_fix (fixS *fixP, valueT *valP, segT seg)
         value = fixP->fx_offset;
         value >>= 2;
         content = (content & ~0x7f7fff7f80LL)
-                  | (((value & 0xff) >> 0) << 7)
-                  | (((value & 0x7fff00) >> 8) << 16)
-                  | (((value & 0x3f800000) >> 23) << 32); 
+         | (((value & 0xff) >> 0) << 7)
+         | (((value & 0x7fff00) >> 8) << 16)
+         | (((value & 0x3f800000) >> 23) << 32);
         s3_md_number_to_chars (buf, content, s3_INSN48_SIZE);
         break;
       }
@@ -7179,9 +7174,9 @@ s3_apply_fix (fixS *fixP, valueT *valP, segT seg)
         content = s3_md_chars_to_number (buf, s3_INSN48_SIZE);
         value = fixP->fx_offset;
         content = (content & ~0x7f7fff7fe0LL)
-                 | ((value & 0x3ff) << 5)
-                 | (((value >> 10) & 0x7fff) << 16)
-                 | (((value >> 25) & 0x7f) << 32);
+         | ((value & 0x3ff) << 5)
+         | (((value >> 10) & 0x7fff) << 16)
+         | (((value >> 25) & 0x7f) << 32);
         s3_md_number_to_chars (buf, content, s3_INSN48_SIZE);
         break;
       }
@@ -7231,7 +7226,7 @@ s3_apply_fix (fixS *fixP, valueT *valP, segT seg)
       content = (content & 0xfc01) | (value & 0xffe);
       s3_md_number_to_chars (buf, content, s3_INSN16_SIZE);
       break;
-   case BFD_RELOC_SCORE16_BRANCH:
+    case BFD_RELOC_SCORE16_BRANCH:
       content = s3_md_chars_to_number (buf, s3_INSN_SIZE);
       /* Don't check c-bit.  */
       if (fixP->fx_frag->fr_opcode != 0)
@@ -7276,7 +7271,7 @@ s3_apply_fix (fixS *fixP, valueT *valP, segT seg)
           break;
         }
 
-    break;
+      break;
 
     case BFD_RELOC_SCORE_BCMP:
       if (fixP->fx_frag->fr_opcode != 0)
@@ -7289,7 +7284,7 @@ s3_apply_fix (fixS *fixP, valueT *valP, segT seg)
           else
             fixP->fx_done = 1;
 
-          /* NOTE!!!  
+          /* NOTE!!!
              bcmp -> cmp! and branch, so value -= 2.  */
           value -= 2;
 
@@ -7321,16 +7316,16 @@ s3_apply_fix (fixS *fixP, valueT *valP, segT seg)
           if ((value & 0xfffffe00) != 0 && (value & 0xfffffe00) != 0xfffffe00)
             {
               as_bad_where (fixP->fx_file, fixP->fx_line,
-                _(" branch relocation truncate (0x%x)  [-2^9 ~ 2^9]"), (unsigned int)value);
+                           _(" branch relocation truncate (0x%x)  [-2^9 ~ 2^9]"), (unsigned int)value);
               return;
             }
 
           value >>= 1;
           content &= ~0x03e00381;
           content = content
-                    | (value & 0x1)
-                    | (((value & 0xe) >> 1) << 7)
-                    | (((value & 0x1f0) >> 4) << 21);
+           | (value & 0x1)
+           | (((value & 0xe) >> 1) << 7)
+           | (((value & 0x1f0) >> 4) << 21);
 
           s3_md_number_to_chars (buf, content, s3_INSN_SIZE);
           break;
@@ -7405,9 +7400,6 @@ s3_gen_reloc (asection * section ATTRIBUTE_UNUSED, fixS * fixp)
   arelent *reloc;
   bfd_reloc_code_real_type code;
   char *type;
-  fragS *f;
-  symbolS *s;
-  expressionS e;
 
   reloc = retval[0] = xmalloc (sizeof (arelent));
   retval[1] = NULL;
@@ -7446,10 +7438,6 @@ s3_gen_reloc (asection * section ATTRIBUTE_UNUSED, fixS * fixp)
       *retval[1]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
       retval[1]->address = (reloc->address + s3_RELAX_RELOC2 (fixp->fx_frag->fr_subtype));
 
-      f = fixp->fx_frag;
-      s = f->fr_symbol;
-      e = s->sy_value;
-
       retval[1]->addend = 0;
       retval[1]->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_LO16);
       gas_assert (retval[1]->howto != NULL);
@@ -7631,7 +7619,7 @@ score_relax_frag (asection * sec ATTRIBUTE_UNUSED, fragS * fragp, long stretch A
 {
   if (score3)
     return s3_relax_frag (sec, fragp, stretch);
-  else 
+  else
     return s7_relax_frag (sec, fragp, stretch);
 }
 
index b21ec521053e2515ba6f83665c04e19c8a7e90d2..c4ae5dd0f1af2f5f2437daa59d4f53daff405082 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-score7.c -- Assembler for Score7
-   Copyright 2009 Free Software Foundation, Inc.
+   Copyright 2009, 2011 Free Software Foundation, Inc.
    Contributed by:
    Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
@@ -1260,12 +1260,12 @@ static int
 s7_my_get_expression (expressionS * ep, char **str)
 {
   char *save_in;
-  segT seg;
 
   save_in = input_line_pointer;
   input_line_pointer = *str;
   s7_in_my_get_expression = 1;
-  seg = expression (ep);
+
+  (void) expression (ep);
   s7_in_my_get_expression = 0;
 
   if (ep->X_op == O_illegal)
@@ -3096,14 +3096,12 @@ s7_do_ldst_insn (char *str)
   int conflict_reg;
   int value;
   char * temp;
-  char *strbak;
   char *dataptr;
   int reg;
   int ldst_idx = 0;
 
   int hex_p = 0;
 
-  strbak = str;
   s7_skip_whitespace (str);
 
   if (((conflict_reg = s7_reg_required_here (&str, 20, s7_REG_TYPE_SCORE)) == (int) s7_FAIL)
@@ -5244,8 +5242,6 @@ s7_b32_relax_to_b16 (fragS * fragp)
 {
   int grows = 0;
   int relaxable_p = 0;
-  int r_old;
-  int r_new;
   int frag_addr = fragp->fr_address + fragp->insn_addr;
 
   addressT symbol_address = 0;
@@ -5259,8 +5255,6 @@ s7_b32_relax_to_b16 (fragS * fragp)
      so in relax stage , it may be wrong to calculate the symbol's offset when the frag's section
      is different from the symbol's.  */
 
-  r_old = s7_RELAX_OLD (fragp->fr_subtype);
-  r_new = s7_RELAX_NEW (fragp->fr_subtype);
   relaxable_p = s7_RELAX_OPT (fragp->fr_subtype);
 
   s = fragp->fr_symbol;
@@ -5648,7 +5642,6 @@ s7_s_score_end (int x ATTRIBUTE_UNUSED)
   /* Generate a .pdr section.  */
   segT saved_seg = now_seg;
   subsegT saved_subseg = now_subseg;
-  valueT dot;
   expressionS exp;
   char *fragp;
 
@@ -5699,7 +5692,7 @@ s7_s_score_end (int x ATTRIBUTE_UNUSED)
 
   else
     {
-      dot = frag_now_fix ();
+      (void) frag_now_fix ();
       gas_assert (s7_pdr_seg);
       subseg_set (s7_pdr_seg, 0);
       /* Write the symbol.  */
@@ -6376,7 +6369,6 @@ s7_relax_frag (asection * sec ATTRIBUTE_UNUSED,
 {
   int grows = 0;
   int insn_size;
-  int insn_relax_size;
   int do_relax_p = 0;           /* Indicate doing relaxation for this frag.  */
   int relaxable_p = 0;
   bfd_boolean word_align_p = FALSE;
@@ -6396,15 +6388,9 @@ s7_relax_frag (asection * sec ATTRIBUTE_UNUSED,
 
   /* Get instruction size and relax size after the last relaxation.  */
   if (fragp->fr_opcode)
-    {
-      insn_size = s7_RELAX_NEW (fragp->fr_subtype);
-      insn_relax_size = s7_RELAX_OLD (fragp->fr_subtype);
-    }
+    insn_size = s7_RELAX_NEW (fragp->fr_subtype);
   else
-    {
-      insn_size = s7_RELAX_OLD (fragp->fr_subtype);
-      insn_relax_size = s7_RELAX_NEW (fragp->fr_subtype);
-    }
+    insn_size = s7_RELAX_OLD (fragp->fr_subtype);
 
   /* Handle specially for s7_GP instruction.  for, s7_judge_size_before_relax() has already determine
      whether the s7_GP instruction should do relax.  */
@@ -6891,9 +6877,6 @@ s7_gen_reloc (asection * section ATTRIBUTE_UNUSED, fixS * fixp)
   arelent *reloc;
   bfd_reloc_code_real_type code;
   char *type;
-  fragS *f;
-  symbolS *s;
-  expressionS e;
 
   reloc = retval[0] = xmalloc (sizeof (arelent));
   retval[1] = NULL;
@@ -6932,10 +6915,6 @@ s7_gen_reloc (asection * section ATTRIBUTE_UNUSED, fixS * fixp)
       *retval[1]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
       retval[1]->address = (reloc->address + s7_RELAX_RELOC2 (fixp->fx_frag->fr_subtype));
 
-      f = fixp->fx_frag;
-      s = f->fr_symbol;
-      e = s->sy_value;
-
       retval[1]->addend = 0;
       retval[1]->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_LO16);
       gas_assert (retval[1]->howto != NULL);