public inbox for cgen@sourceware.org
 help / color / mirror / Atom feed
* Fix cgen warnings in opcodes/
@ 2002-12-01 22:59 Alan Modra
  2002-12-02  4:57 ` Alan Modra
  2002-12-02 10:53 ` Frank Ch. Eigler
  0 siblings, 2 replies; 5+ messages in thread
From: Alan Modra @ 2002-12-01 22:59 UTC (permalink / raw)
  To: cgen, binutils

I grew tired of waiting for one of the cgen maintainers to fix
zillions of warnings in opcodes/, so decided on a foray into cgen
myself.  It wasn't as bad as I thought it would be.  :-)  This patch
banishes most of the warnings in cgen files, leaving only a few about
unused functions/vars.

Quoting from the cgen web page: "All patches must conform to the GNU
Coding Standards".  Hmm, so how did cpu/ip2k.opc get in???  The file
still needs quite a bit of work, I've just fixed the worst violations. 

OK to apply?

include/opcode/ChangeLog
	* cgen.h (struct cgen_maybe_multi_ifield): Add "const PTR p" to union.
	Constify "leaf" and "multi".

cgen/ChangeLog
	* desc-cpu.scm (gen-maybe-multi-ifld): Remove superfluous parens.
	Add braces and cast for union field.
	(gen-multi-ifield-nodes): Add braces and cast for union field.
	(cgen_operand_table): Similarly fix sentinel.
	(cgen_cpu_close): Constify "insns".  Formatting.
	(cgen-desc.c): Include regex.h.
	* cpu/ip2k.opc (ip2k_cgen_insn_supported): Move to opc.c section.
	Prototype.
	<opc.c>: Include safe-ctype.h.
	(ip2k_asm_hash): Use ISSPACE and TOLOWER.
	(PARSE_FUNC_DECL): Declare.  Use to prototype parse_fr, parse_addr16,
	parse_addr16_p, parse_addr16_cjp, parse_lit8 and parse_bit3.
	(parse_fr): Constify "old_strp".  Correct type of "tempvalue".
	Don't test it for >= 0.  Use ISSPACE rather than isspace.  Formatting.
	(parse_addr16): Correct type of "value".  Formatting.
	(parse_addr16_p): Likewise.
	(parse_addr16_cjp): Likewise.
	(parse_lit8): Likewise.
	(parse_bit3): Formatting.
	(PRINT_FUNC_DECL): Define.  Use to prototype print_fr, print_dollarhex,
	print_dollarhex8, print_dollarhex16, print_dollarhex_addr16h,
	print_dollarhex_addr16l, print_dollarhex_p, print_dollarhex_cj and
	print_decimal.
	(print_fr): Add ATTRIBUTE_UNUSED on unused args.  Formatting.
	(print_dollarhex): Add ATTRIBUTE_UNUSED on unused args.
	(print_dollarhex8): Likewise.
	(print_dollarhex16): Likewise.
	(print_dollarhex_addr16h): Likewise.
	(print_dollarhex_addr16l): Likewise.
	(print_dollarhex_p): Likewise.
	(print_dollarhex_cj): Likewise.
	(print_decimal): Likewise.
	* cpu/xstormy16.opc (parse_mem8): Use ISALNUM rather than isalnum.

opcodes/ChangeLog
	* cgen-dis.in: Include libiberty.h.
	* fr30-desc.c: Regenerate.
	* fr30-dis.c: Regenerate.
	* frv-desc.c: Regenerate.
	* frv-dis.c: Regenerate.
	* ip2k-asm.c: Regenerate.
	* ip2k-desc.c: Regenerate.
	* ip2k-dis.c: Regenerate.
	* ip2k-opc.c: Regenerate.
	* ip2k-opc.h: Regenerate.
	* m32r-desc.c: Regenerate.
	* m32r-dis.c: Regenerate.
	* openrisc-desc.c: Regenerate.
	* openrisc-dis.c: Regenerate.
	* xstormy16-asm.c: Regenerate.
	* xstormy16-desc.c: Regenerate.
	* xstormy16-dis.c: Regenerate.

Index: include/opcode/cgen.h
===================================================================
RCS file: /cvs/src/src/include/opcode/cgen.h,v
retrieving revision 1.17
diff -u -p -r1.17 cgen.h
--- include/opcode/cgen.h	14 Oct 2002 10:55:14 -0000	1.17
+++ include/opcode/cgen.h	2 Dec 2002 06:08:08 -0000
@@ -620,8 +620,9 @@ typedef struct cgen_maybe_multi_ifield
 		n: indexed by array of more cgen_maybe_multi_ifields.  */
   union
   {
-    struct cgen_maybe_multi_ifield * multi;
-    struct cgen_ifld * leaf;
+    const PTR p;
+    const struct cgen_maybe_multi_ifield * multi;
+    const struct cgen_ifld * leaf;
   } val;
 }
 CGEN_MAYBE_MULTI_IFLD;
Index: cgen/desc-cpu.scm
===================================================================
RCS file: /cvs/src/src/cgen/desc-cpu.scm,v
retrieving revision 1.12
diff -u -p -r1.12 desc-cpu.scm
--- cgen/desc-cpu.scm	8 May 2002 20:47:04 -0000	1.12
+++ cgen/desc-cpu.scm	2 Dec 2002 05:39:23 -0000
@@ -401,11 +401,11 @@ const CGEN_HW_ENTRY @arch@_cgen_hw_table
     (if (equal? ty 'ifield)
 	(if (multi-ifield? fld) 
 	    (begin
-	      (set! field-ref (string-append "&(" (ifld-enum fld) "_MULTI_IFIELD[0])"))
+	      (set! field-ref (string-append "&" (ifld-enum fld) "_MULTI_IFIELD[0]"))
 	      (set! field-count (number->string (length (elm-get fld 'subfields)))))
 	    ; else	    
-	      (set! field-ref (string-append "&(@arch@_cgen_ifld_table[" (ifld-number fld) "])"))))    
-    (string-append "{ " field-count ", " field-ref " }"))) 
+	      (set! field-ref (string-append "&@arch@_cgen_ifld_table[" (ifld-number fld) "]"))))
+    (string-append "{ " field-count ", { (const PTR) " field-ref " } }")))
 
 (define (gen-multi-ifield-nodes)
   (let ((multis (find multi-ifield? (current-ifld-list))))
@@ -429,7 +429,7 @@ const CGEN_HW_ENTRY @arch@_cgen_hw_table
 		(apply string-append 
 		       (map (lambda (x) (string-append "\n    " (gen-maybe-multi-ifld 'ifield x) ",")) 
 			    (elm-get ifld 'subfields)))
-		"\n    {0,0}\n};\n"))
+		"\n    { 0, { (const PTR) 0 } }\n};\n"))
 	     multis)))))
 
 (define (gen-operand-table)
@@ -470,8 +470,8 @@ const CGEN_OPERAND @arch@_cgen_operand_t
 			         "  },\n"
 			      )))))
       (current-op-list))
-     "\
-  { 0, 0, 0, 0, 0, {0, {0}} }
+     "/* sentinel */\n\
+  { 0, 0, 0, 0, 0,\n    { 0, { (const PTR) 0 } },\n    { 0, { 0 } } }
 };
 
 #undef A
@@ -900,7 +900,7 @@ void
      CGEN_CPU_DESC cd;
 {
   unsigned int i;
-  CGEN_INSN *insns;
+  const CGEN_INSN *insns;
 
   if (cd->macro_insn_table.init_entries)
     {
@@ -908,7 +908,7 @@ void
       for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns)
 	{
 	  if (CGEN_INSN_RX ((insns)))
-	    regfree(CGEN_INSN_RX (insns));
+	    regfree (CGEN_INSN_RX (insns));
 	}
     }
 
@@ -918,7 +918,7 @@ void
       for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns)
 	{
 	  if (CGEN_INSN_RX (insns))
-	    regfree(CGEN_INSN_RX (insns));
+	    regfree (CGEN_INSN_RX (insns));
 	}
     }
 
@@ -1037,6 +1037,7 @@ init_tables ()
 #include \"sysdep.h\"
 #include <stdio.h>
 #include <stdarg.h>
+#include <regex.h>
 #include \"ansidecl.h\"
 #include \"bfd.h\"
 #include \"symcat.h\"
Index: cgen/cpu/ip2k.opc
===================================================================
RCS file: /cvs/src/src/cgen/cpu/ip2k.opc,v
retrieving revision 1.1
diff -u -p -r1.1 ip2k.opc
--- cgen/cpu/ip2k.opc	17 Jul 2002 14:56:53 -0000	1.1
+++ cgen/cpu/ip2k.opc	2 Dec 2002 06:48:38 -0000
@@ -29,27 +29,14 @@
 #define CGEN_ASM_HASH_SIZE 127
 #define CGEN_ASM_HASH(insn) ip2k_asm_hash(insn)
 
-extern unsigned int ip2k_asm_hash (const char *insn);
-
-
-/* Special check to ensure that instruction exists for given machine. */
-static int
-ip2k_cgen_insn_supported (cd, insn)
-     CGEN_CPU_DESC cd;
-     CGEN_INSN *insn;
-{
-  int machs = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_MACH);
-
-  /* No mach attribute?  Assume it's supported for all machs.  */
-  if (machs == 0)
-    return 1;
-  
-  return ((machs & cd->machs) != 0);
-}
-
+extern unsigned int ip2k_asm_hash PARAMS ((const char *insn));
+extern int ip2k_cgen_insn_supported
+  PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *));
 \f
 /* -- opc.c */
 
+#include "safe-ctype.h"
+
 /* A better hash function for instruction mnemonics. */
 unsigned int
 ip2k_asm_hash (insn)
@@ -58,8 +45,8 @@ ip2k_asm_hash (insn)
   unsigned int hash;
   const char* m = insn;
 
-  for (hash = 0; *m && !isspace(*m); m++)
-    hash = (hash * 23) ^ (0x1F & tolower(*m));
+  for (hash = 0; *m && !ISSPACE(*m); m++)
+    hash = (hash * 23) ^ (0x1F & TOLOWER(*m));
 
   /* printf ("%s %d\n", insn, (hash % CGEN_ASM_HASH_SIZE)); */
 
@@ -67,10 +54,35 @@ ip2k_asm_hash (insn)
 }
 
 
+/* Special check to ensure that instruction exists for given machine. */
+int
+ip2k_cgen_insn_supported (cd, insn)
+     CGEN_CPU_DESC cd;
+     const CGEN_INSN *insn;
+{
+  int machs = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_MACH);
+
+  /* No mach attribute?  Assume it's supported for all machs.  */
+  if (machs == 0)
+    return 1;
+  
+  return ((machs & cd->machs) != 0);
+}
 
 \f
 /* -- asm.c */
 
+#define PARSE_FUNC_DECL(name) \
+static const char *name PARAMS ((CGEN_CPU_DESC, const char **, int, long *))
+
+PARSE_FUNC_DECL (parse_fr);
+PARSE_FUNC_DECL (parse_addr16);
+PARSE_FUNC_DECL (parse_addr16_p);
+PARSE_FUNC_DECL (parse_addr16_cjp);
+PARSE_FUNC_DECL (parse_lit8);
+PARSE_FUNC_DECL (parse_bit3);
+
+
 static const char *
 parse_fr (cd, strp, opindex, valuep)
      CGEN_CPU_DESC cd;
@@ -79,12 +91,12 @@ parse_fr (cd, strp, opindex, valuep)
      long *valuep;
 {
   const char *errmsg;
-  char *old_strp;
+  const char *old_strp;
   char *afteroffset; 
   enum cgen_parse_operand_result result_type;
   bfd_vma value;
   extern CGEN_KEYWORD ip2k_cgen_opval_register_names;
-  long tempvalue;
+  bfd_vma tempvalue;
 
   old_strp = *strp;
   afteroffset = NULL; 
@@ -93,36 +105,37 @@ parse_fr (cd, strp, opindex, valuep)
   /* Check here to see if you're about to try parsing a w as the first arg */
   /* and return an error if you are.                                       */
   if ( (strncmp(*strp,"w",1)==0) || (strncmp(*strp,"W",1)==0) )
-  {
-     (*strp)++;
+    {
+      (*strp)++;
 
-     if ( (strncmp(*strp,",",1)==0) || isspace(**strp) )
-     {
-        /* We've been passed a w.  Return with an error message so that  */
-        /* cgen will try the next parsing option.                        */
-        errmsg = _("W keyword invalid in FR operand slot.");
-        return errmsg;
-     }
-     *strp = old_strp;
-  }
+      if ( (strncmp(*strp,",",1)==0) || ISSPACE(**strp) )
+	{
+	  /* We've been passed a w.  Return with an error message so that  */
+	  /* cgen will try the next parsing option.                        */
+	  errmsg = _("W keyword invalid in FR operand slot.");
+	  return errmsg;
+	}
+      *strp = old_strp;
+    }
 
 
   /* Attempt parse as register keyword. */
   /* old_strp = *strp; */
 
-  errmsg = cgen_parse_keyword (cd, strp, & ip2k_cgen_opval_register_names, valuep);
+  errmsg = cgen_parse_keyword (cd, strp, & ip2k_cgen_opval_register_names,
+			       valuep);
   if ( *strp != NULL )
-  if (errmsg == NULL)
-    return errmsg;
+    if (errmsg == NULL)
+      return errmsg;
 
   /* Attempt to parse for "(IP)" */
   afteroffset = strstr(*strp,"(IP)");
 
   if ( afteroffset == NULL)
-  {
-     /* Make sure it's not in lower case */
-     afteroffset = strstr(*strp,"(ip)");
-  }
+    {
+      /* Make sure it's not in lower case */
+      afteroffset = strstr(*strp,"(ip)");
+    }
 
   if ( afteroffset != NULL )
     {
@@ -149,42 +162,44 @@ parse_fr (cd, strp, opindex, valuep)
   afteroffset = strstr(*strp,"(DP)");
 
   if ( afteroffset == NULL)
-  {
-     /* Maybe it's in lower case */
-     afteroffset = strstr(*strp,"(dp)");
-  }
+    {
+      /* Maybe it's in lower case */
+      afteroffset = strstr(*strp,"(dp)");
+    }
 
   if ( afteroffset != NULL )
-  {
-     if ( afteroffset == *strp )
-     {
-        /* No offset present. Use 0 by default. */
-        tempvalue = 0;
-        errmsg = NULL;
-     }
-     else
-     {
-       errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_IP2K_FR_OFFSET,
-				    & result_type, & tempvalue);
-     }
-
-     if (errmsg == NULL)
-     {
-        if ( (tempvalue >= 0) && (tempvalue <= 127) )
-        {
-           /* Value is ok.  Fix up the first 2 bits and return */       
-           *valuep = 0x0100 | tempvalue;
-           *strp += 4; /* skip over the (DP) in *strp */
-           return errmsg;
-        } else
-        {
-           /* Found something there in front of (DP) but it's out of range. */
-           errmsg = _("(DP) offset out of range.");
-           return errmsg;
-        }
-        
-     }
-  }
+    {
+      if ( afteroffset == *strp )
+	{
+	  /* No offset present. Use 0 by default. */
+	  tempvalue = 0;
+	  errmsg = NULL;
+	}
+      else
+	{
+	  errmsg = cgen_parse_address (cd, strp, opindex,
+				       BFD_RELOC_IP2K_FR_OFFSET,
+				       & result_type, & tempvalue);
+	}
+
+      if (errmsg == NULL)
+	{
+	  if (tempvalue <= 127)
+	    {
+	      /* Value is ok.  Fix up the first 2 bits and return */       
+	      *valuep = 0x0100 | tempvalue;
+	      *strp += 4; /* skip over the (DP) in *strp */
+	      return errmsg;
+	    }
+	  else
+	    {
+	      /* Found something there in front of (DP) but it's out
+		 of range. */
+	      errmsg = _("(DP) offset out of range.");
+	      return errmsg;
+	    }
+	}
+    }
 
 
   /* Attempt to parse for SP. ex: mov w, offset(SP)  */
@@ -194,41 +209,44 @@ parse_fr (cd, strp, opindex, valuep)
   afteroffset = strstr(*strp,"(SP)");
 
   if (afteroffset == NULL)
-  {
-     /* Maybe it's in lower case. */
-     afteroffset = strstr(*strp, "(sp)");
-  }
+    {
+      /* Maybe it's in lower case. */
+      afteroffset = strstr(*strp, "(sp)");
+    }
 
   if ( afteroffset != NULL )
-  {
-     if ( afteroffset ==  *strp )
-     {
-        /* No offset present. Use 0 by default. */
-        tempvalue = 0;
-        errmsg = NULL;
-     }
-     else
-     {
-       errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_IP2K_FR_OFFSET,
-				    & result_type, & tempvalue);
-     }
-     if (errmsg == NULL)
-     {
-        if ( (tempvalue >= 0) && (tempvalue <= 127) )
-        {
-           /* Value is ok.  Fix up the first 2 bits and return */
-           *valuep = 0x0180 | tempvalue;
-           *strp += 4; /* skip over the (SP) in *strp */
-           return errmsg;
-        } else
-        {
-           /* Found something there in front of (SP) but it's out of range. */
-           errmsg = _("(SP) offset out of range.");
-           return errmsg;
-        }
+    {
+      if ( afteroffset ==  *strp )
+	{
+	  /* No offset present. Use 0 by default. */
+	  tempvalue = 0;
+	  errmsg = NULL;
+	}
+      else
+	{
+	  errmsg = cgen_parse_address (cd, strp, opindex,
+				       BFD_RELOC_IP2K_FR_OFFSET,
+				       & result_type, & tempvalue);
+	}
+      if (errmsg == NULL)
+	{
+	  if (tempvalue <= 127)
+	    {
+	      /* Value is ok.  Fix up the first 2 bits and return */
+	      *valuep = 0x0180 | tempvalue;
+	      *strp += 4; /* skip over the (SP) in *strp */
+	      return errmsg;
+	    }
+	  else
+	    {
+	      /* Found something there in front of (SP) but it's out
+		 of range. */
+	      errmsg = _("(SP) offset out of range.");
+	      return errmsg;
+	    }
         
-     }
-  }
+	}
+    }
 
 
   /* Attempt to parse as an address. */
@@ -245,7 +263,8 @@ parse_fr (cd, strp, opindex, valuep)
 	{
 	  errmsg = _("illegal use of parentheses");
         }
-      /* if a numeric value is specified, ensure that it is between 1 and 255 */
+      /* if a numeric value is specified, ensure that it is between
+	 1 and 255 */
       else if (result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
 	{
 	  if (value < 0x1 || value > 0xff)
@@ -265,12 +284,12 @@ parse_addr16 (cd, strp, opindex, valuep)
   const char *errmsg;
   enum cgen_parse_operand_result result_type;
   bfd_reloc_code_real_type code = BFD_RELOC_NONE;
-  long value;
+  bfd_vma value;
 
   if ( opindex == (CGEN_OPERAND_TYPE)IP2K_OPERAND_ADDR16H )
-      code = BFD_RELOC_IP2K_HI8DATA;
+    code = BFD_RELOC_IP2K_HI8DATA;
   else if ( opindex == (CGEN_OPERAND_TYPE)IP2K_OPERAND_ADDR16L )
-      code = BFD_RELOC_IP2K_LO8DATA;
+    code = BFD_RELOC_IP2K_LO8DATA;
   else
     {
       /* Something is very wrong. opindex has to be one of the above. */
@@ -279,93 +298,94 @@ parse_addr16 (cd, strp, opindex, valuep)
     }
   
   errmsg = cgen_parse_address (cd, strp, opindex, code,
-                                  & result_type, & value);
+			       & result_type, & value);
   if (errmsg == NULL)
     {
-       /* We either have a relocation or a number now. */
+      /* We either have a relocation or a number now. */
       if ( result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER )
-      {
-         /* We got a number back. */
-         if ( code == BFD_RELOC_IP2K_HI8DATA )
+	{
+	  /* We got a number back. */
+	  if ( code == BFD_RELOC_IP2K_HI8DATA )
             value >>= 8;
-         else    /* code = BFD_RELOC_IP2K_LOW8DATA */
+	  else    /* code = BFD_RELOC_IP2K_LOW8DATA */
 	    value &= 0x00FF;
-      }   
-         *valuep = value;
-   }
+	}   
+      *valuep = value;
+    }
 
   return errmsg;
 }
 
 
- static const char *
- parse_addr16_p (cd, strp, opindex, valuep)
-      CGEN_CPU_DESC cd;
-      const char **strp;
-      int opindex;
-      long *valuep;
- {
-   const char *errmsg;
-   enum cgen_parse_operand_result result_type;
-   bfd_reloc_code_real_type code = BFD_RELOC_IP2K_PAGE3;
-   long value;
+static const char *
+parse_addr16_p (cd, strp, opindex, valuep)
+     CGEN_CPU_DESC cd;
+     const char **strp;
+     int opindex;
+     long *valuep;
+{
+  const char *errmsg;
+  enum cgen_parse_operand_result result_type;
+  bfd_reloc_code_real_type code = BFD_RELOC_IP2K_PAGE3;
+  bfd_vma value;
  
-   errmsg = cgen_parse_address (cd, strp, opindex, code,
-                                 & result_type, & value);
-   if (errmsg == NULL)
-   {
-       if ( result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER )
-            *valuep = (value >> 13) & 0x7;
-       else if ( result_type == CGEN_PARSE_OPERAND_RESULT_QUEUED )
-            *valuep = value;
-   }
-   return errmsg; 
- }
-
-
- static const char *
- parse_addr16_cjp (cd, strp, opindex, valuep)
-      CGEN_CPU_DESC cd;
-      const char **strp;
-      int opindex;
-      long *valuep;
- {
-   const char *errmsg;
-   enum cgen_parse_operand_result result_type;
-   bfd_reloc_code_real_type code = BFD_RELOC_NONE;
-   long value;
+  errmsg = cgen_parse_address (cd, strp, opindex, code,
+			       & result_type, & value);
+  if (errmsg == NULL)
+    {
+      if ( result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER )
+	*valuep = (value >> 13) & 0x7;
+      else if ( result_type == CGEN_PARSE_OPERAND_RESULT_QUEUED )
+	*valuep = value;
+    }
+  return errmsg; 
+}
+
+
+static const char *
+parse_addr16_cjp (cd, strp, opindex, valuep)
+     CGEN_CPU_DESC cd;
+     const char **strp;
+     int opindex;
+     long *valuep;
+{
+  const char *errmsg;
+  enum cgen_parse_operand_result result_type;
+  bfd_reloc_code_real_type code = BFD_RELOC_NONE;
+  bfd_vma value;
  
-   if ( opindex == (CGEN_OPERAND_TYPE)IP2K_OPERAND_ADDR16CJP )
-      code = BFD_RELOC_IP2K_ADDR16CJP;
-   else if ( opindex == (CGEN_OPERAND_TYPE)IP2K_OPERAND_ADDR16P )
-      code = BFD_RELOC_IP2K_PAGE3;
-
-   errmsg = cgen_parse_address (cd, strp, opindex, code,
-                                 & result_type, & value);
-   if (errmsg == NULL)
-   {
-       if ( result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER )
-       {
-  	 if ( (value & 0x1) == 0)  /* If the address is even .... */
-         {
-             if ( opindex == (CGEN_OPERAND_TYPE)IP2K_OPERAND_ADDR16CJP )
+  if ( opindex == (CGEN_OPERAND_TYPE)IP2K_OPERAND_ADDR16CJP )
+    code = BFD_RELOC_IP2K_ADDR16CJP;
+  else if ( opindex == (CGEN_OPERAND_TYPE)IP2K_OPERAND_ADDR16P )
+    code = BFD_RELOC_IP2K_PAGE3;
+
+  errmsg = cgen_parse_address (cd, strp, opindex, code,
+			       & result_type, & value);
+  if (errmsg == NULL)
+    {
+      if ( result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER )
+	{
+	  if ( (value & 0x1) == 0)  /* If the address is even .... */
+	    {
+	      if ( opindex == (CGEN_OPERAND_TYPE)IP2K_OPERAND_ADDR16CJP )
                 *valuep = (value >> 1) & 0x1FFF;  /* Should mask be 1FFF? */
-             else if ( opindex == (CGEN_OPERAND_TYPE)IP2K_OPERAND_ADDR16P )
+	      else if ( opindex == (CGEN_OPERAND_TYPE)IP2K_OPERAND_ADDR16P )
                 *valuep = (value >> 14) & 0x7;
-          }
+	    }
           else
  	    errmsg = _("Byte address required. - must be even.");
-       }else if ( result_type == CGEN_PARSE_OPERAND_RESULT_QUEUED )
-       {
-            /* This will happen for things like (s2-s1) where s2 and s1 */
- 	    /* are labels.                                	        */
-            *valuep = value;
-        }
+	}
+      else if ( result_type == CGEN_PARSE_OPERAND_RESULT_QUEUED )
+	{
+	  /* This will happen for things like (s2-s1) where s2 and s1
+	     are labels.  */
+	  *valuep = value;
+	}
       else 
         errmsg = _("cgen_parse_address returned a symbol. Literal required.");
-   }
-   return errmsg; 
- }
+    }
+  return errmsg; 
+}
 
 
 static const char *
@@ -378,7 +398,7 @@ parse_lit8 (cd, strp, opindex, valuep)
   const char *errmsg;
   enum cgen_parse_operand_result result_type;
   bfd_reloc_code_real_type code = BFD_RELOC_NONE;
-  long value;
+  bfd_vma value;
 
   /* Parse %OP relocating operators. */
   if (strncmp (*strp, "%bank", 5) == 0)
@@ -466,33 +486,39 @@ parse_bit3 (cd, strp, opindex, valuep)
     }
 
   errmsg = cgen_parse_signed_integer (cd, strp, opindex, valuep);
-  if (errmsg) {
+  if (errmsg)
     return errmsg;
-  }
 
-  if (mode) {
-    value = (unsigned long) *valuep;
-    if (value == 0) {
-      errmsg = _("Attempt to find bit index of 0");
-      return errmsg;
-    }
+  if (mode)
+    {
+      value = (unsigned long) *valuep;
+      if (value == 0)
+	{
+	  errmsg = _("Attempt to find bit index of 0");
+	  return errmsg;
+	}
     
-    if (mode == 1) {
-      count = 31;
-      while ((value & 0x80000000) == 0) {
-        count--;
-        value <<= 1;
-      }
-    } else if (mode == 2) {
-      count = 0;
-      while ((value & 0x00000001) == 0) {
-        count++;
-        value >>= 1;
-      }
-    }
+      if (mode == 1)
+	{
+	  count = 31;
+	  while ((value & 0x80000000) == 0)
+	    {
+	      count--;
+	      value <<= 1;
+	    }
+	}
+      else if (mode == 2)
+	{
+	  count = 0;
+	  while ((value & 0x00000001) == 0)
+	    {
+	      count++;
+	      value >>= 1;
+	    }
+	}
     
-    *valuep = count;
-  }
+      *valuep = count;
+    }
 
   return errmsg;
 }
@@ -500,14 +526,27 @@ parse_bit3 (cd, strp, opindex, valuep)
 
 /* -- dis.c */
 
+#define PRINT_FUNC_DECL(name) \
+static void name PARAMS ((CGEN_CPU_DESC, PTR, long, unsigned int, bfd_vma, int))
+
+PRINT_FUNC_DECL (print_fr);
+PRINT_FUNC_DECL (print_dollarhex);
+PRINT_FUNC_DECL (print_dollarhex8);
+PRINT_FUNC_DECL (print_dollarhex16);
+PRINT_FUNC_DECL (print_dollarhex_addr16h);
+PRINT_FUNC_DECL (print_dollarhex_addr16l);
+PRINT_FUNC_DECL (print_dollarhex_p);
+PRINT_FUNC_DECL (print_dollarhex_cj);
+PRINT_FUNC_DECL (print_decimal);
+
 static void
 print_fr (cd, dis_info, value, attrs, pc, length)
-     CGEN_CPU_DESC cd;
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
      PTR dis_info;
      long value;
-     unsigned int attrs;
-     bfd_vma pc;
-     int length;
+     unsigned int attrs ATTRIBUTE_UNUSED;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
   const CGEN_KEYWORD_ENTRY *ke;
@@ -516,33 +555,33 @@ print_fr (cd, dis_info, value, attrs, pc
   long offsetvalue;
 
   if ( value == 0 ) /* This is (IP) */
-  {
+    {
       (*info->fprintf_func) (info->stream, "%s", "(IP)");
       return;
-  }
+    }
 
   offsettest = value >> 7;
   offsetvalue = value & 0x7F;
 
   /* Check to see if first two bits are 10 -> (DP) */
   if ( offsettest == 2 )
-  {
+    {
       if ( offsetvalue == 0 )
-         (*info->fprintf_func) (info->stream, "%s","(DP)");
+	(*info->fprintf_func) (info->stream, "%s","(DP)");
       else
-         (*info->fprintf_func) (info->stream, "$%x%s",offsetvalue, "(DP)");
+	(*info->fprintf_func) (info->stream, "$%x%s",offsetvalue, "(DP)");
       return;
-  }
+    }
 
   /* Check to see if first two bits are 11 -> (SP) */
   if ( offsettest == 3 )
-  {
+    {
       if ( offsetvalue == 0 )
-         (*info->fprintf_func) (info->stream, "%s", "(SP)");
+	(*info->fprintf_func) (info->stream, "%s", "(SP)");
       else
-         (*info->fprintf_func) (info->stream, "$%x%s", offsetvalue,"(SP)");
+	(*info->fprintf_func) (info->stream, "$%x%s", offsetvalue,"(SP)");
       return;
-  }
+    }
 
   /* Attempt to print as a register keyword. */
   ke = cgen_keyword_lookup_value (& ip2k_cgen_opval_register_names, value);
@@ -558,12 +597,12 @@ print_fr (cd, dis_info, value, attrs, pc
 
 static void
 print_dollarhex (cd, dis_info, value, attrs, pc, length)
-     CGEN_CPU_DESC cd;
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
      PTR dis_info;
      long value;
-     unsigned int attrs;
-     bfd_vma pc;
-     int length;
+     unsigned int attrs ATTRIBUTE_UNUSED;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -572,12 +611,12 @@ print_dollarhex (cd, dis_info, value, at
 
 static void
 print_dollarhex8 (cd, dis_info, value, attrs, pc, length)
-     CGEN_CPU_DESC cd;
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
      PTR dis_info;
      long value;
-     unsigned int attrs;
-     bfd_vma pc;
-     int length;
+     unsigned int attrs ATTRIBUTE_UNUSED;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -586,12 +625,12 @@ print_dollarhex8 (cd, dis_info, value, a
 
 static void
 print_dollarhex16 (cd, dis_info, value, attrs, pc, length)
-     CGEN_CPU_DESC cd;
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
      PTR dis_info;
      long value;
-     unsigned int attrs;
-     bfd_vma pc;
-     int length;
+     unsigned int attrs ATTRIBUTE_UNUSED;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -600,12 +639,12 @@ print_dollarhex16 (cd, dis_info, value, 
 
 static void
 print_dollarhex_addr16h (cd, dis_info, value, attrs, pc, length)
-     CGEN_CPU_DESC cd;
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
      PTR dis_info;
      long value;
-     unsigned int attrs;
-     bfd_vma pc;
-     int length;
+     unsigned int attrs ATTRIBUTE_UNUSED;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -618,12 +657,12 @@ print_dollarhex_addr16h (cd, dis_info, v
 
 static void
 print_dollarhex_addr16l (cd, dis_info, value, attrs, pc, length)
-     CGEN_CPU_DESC cd;
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
      PTR dis_info;
      long value;
-     unsigned int attrs;
-     bfd_vma pc;
-     int length;
+     unsigned int attrs ATTRIBUTE_UNUSED;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -632,12 +671,12 @@ print_dollarhex_addr16l (cd, dis_info, v
 
 static void
 print_dollarhex_p (cd, dis_info, value, attrs, pc, length)
-     CGEN_CPU_DESC cd;
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
      PTR dis_info;
      long value;
-     unsigned int attrs;
-     bfd_vma pc;
-     int length;
+     unsigned int attrs ATTRIBUTE_UNUSED;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -648,12 +687,12 @@ print_dollarhex_p (cd, dis_info, value, 
 
 static void
 print_dollarhex_cj (cd, dis_info, value, attrs, pc, length)
-     CGEN_CPU_DESC cd;
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
      PTR dis_info;
      long value;
-     unsigned int attrs;
-     bfd_vma pc;
-     int length;
+     unsigned int attrs ATTRIBUTE_UNUSED;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
@@ -664,12 +703,12 @@ print_dollarhex_cj (cd, dis_info, value,
 
 static void
 print_decimal (cd, dis_info, value, attrs, pc, length)
-     CGEN_CPU_DESC cd;
+     CGEN_CPU_DESC cd ATTRIBUTE_UNUSED;
      PTR dis_info;
      long value;
-     unsigned int attrs;
-     bfd_vma pc;
-     int length;
+     unsigned int attrs ATTRIBUTE_UNUSED;
+     bfd_vma pc ATTRIBUTE_UNUSED;
+     int length ATTRIBUTE_UNUSED;
 {
   disassemble_info *info = (disassemble_info *) dis_info;
 
Index: cgen/cpu/xstormy16.opc
===================================================================
RCS file: /cvs/src/src/cgen/cpu/xstormy16.opc,v
retrieving revision 1.1
diff -u -p -r1.1 xstormy16.opc
--- cgen/cpu/xstormy16.opc	7 Dec 2001 22:51:28 -0000	1.1
+++ cgen/cpu/xstormy16.opc	2 Dec 2002 05:39:23 -0000
@@ -55,7 +55,7 @@ parse_mem8 (cd, strp, opindex, valuep)
       if (s[1] == '-' && s[2] == '-')
 	return _("Bad register in preincrement");
 
-      while (isalnum (*++s))
+      while (ISALNUM (*++s))
 	;
       if (s[0] == '+' && s[1] == '+' && (s[2] == ')' || s[2] == ','))
 	return _("Bad register in postincrement");
Index: opcodes/cgen-dis.in
===================================================================
RCS file: /cvs/src/src/opcodes/cgen-dis.in,v
retrieving revision 1.15
diff -u -p -r1.15 cgen-dis.in
--- opcodes/cgen-dis.in	8 May 2002 20:47:06 -0000	1.15
+++ opcodes/cgen-dis.in	2 Dec 2002 05:39:23 -0000
@@ -31,6 +31,7 @@ along with this program; if not, write t
 #include "dis-asm.h"
 #include "bfd.h"
 #include "symcat.h"
+#include "libiberty.h"
 #include "@prefix@-desc.h"
 #include "@prefix@-opc.h"
 #include "opintl.h"

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Fix cgen warnings in opcodes/
  2002-12-01 22:59 Fix cgen warnings in opcodes/ Alan Modra
@ 2002-12-02  4:57 ` Alan Modra
  2002-12-02 10:53 ` Frank Ch. Eigler
  1 sibling, 0 replies; 5+ messages in thread
From: Alan Modra @ 2002-12-02  4:57 UTC (permalink / raw)
  To: cgen, binutils

On Mon, Dec 02, 2002 at 05:28:55PM +1030, Alan Modra wrote:
> This patch
> banishes most of the warnings in cgen files, leaving only a few about
> unused functions/vars.

Well, that was a rash claim.  There were some type punned pointer
warnings to fix in cgen/cpu/openrisc.opc, and lots of missing
initializer warnings for opcodes/m32r-opinst.c, fixed by the
opc-opinst.scm change.

cgen/ChangeLog
	* opc-opinst.scm (-gen-operand-instance-table): Init all fields
	of structure when using END.
	* cpu/openrisc.opc (openrisc_sign_extend_16bit): Don't rely on
	"short" being 16 bit.
	(parse_hi16): Likewise.  Fix type-punned pointer warnings too, and
	internationalize error message.
	(parse_lo16): Likewise.  Remove useless code.

Index: cgen/opc-opinst.scm
===================================================================
RCS file: /cvs/src/src/cgen/opc-opinst.scm,v
retrieving revision 1.2
diff -u -p -r1.2 opc-opinst.scm
--- cgen/opc-opinst.scm	20 Nov 2000 19:03:33 -0000	1.2
+++ cgen/opc-opinst.scm	2 Dec 2002 12:40:46 -0000
@@ -54,7 +54,7 @@
 		  ins)
       (string-map (lambda (op)  (-gen-operand-instance op "OUTPUT"))
 		  outs)
-      "  { END }\n};\n\n")))
+      "  { END, 0, 0, 0, 0, 0, 0 }\n};\n\n")))
 )
 
 (define (-gen-operand-instance-tables)
Index: cgen/cpu/openrisc.opc
===================================================================
RCS file: /cvs/src/src/cgen/cpu/openrisc.opc,v
retrieving revision 1.2
diff -u -p -r1.2 openrisc.opc
--- cgen/cpu/openrisc.opc	9 Oct 2001 08:24:22 -0000	1.2
+++ cgen/cpu/openrisc.opc	2 Dec 2002 12:53:26 -0000
@@ -44,7 +44,7 @@ long
 openrisc_sign_extend_16bit (value)
      long value;
 {
-  return (long) (short) value;
+  return ((value & 0xffff) ^ 0x8000) - 0x8000;
 }
 
 /* Handle hi().  */
@@ -58,15 +58,16 @@ parse_hi16 (cd, strp, opindex, valuep)
 {
   const char *errmsg;
   enum cgen_parse_operand_result result_type;
-  bfd_vma value;
+  unsigned long ret;
 
   if (**strp == '#')
     ++*strp;
 
   if (strncasecmp (*strp, "hi(", 3) == 0)
     {
-      *strp += 3;
+      bfd_vma value;
 
+      *strp += 3;
 #if 0
       errmsg = cgen_parse_signed_integer (cd, strp, opindex, valuep);
       if (errmsg != NULL)
@@ -76,23 +77,31 @@ parse_hi16 (cd, strp, opindex, valuep)
         errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_HI16,
                                      &result_type, &value);
       if (**strp != ')')
-        return "missing `)'";
+        return _("missing `)'");
+
       ++*strp;
       if (errmsg == NULL
           && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
         value >>= 16;
-      *valuep = (long) (short) value;
-
-      return errmsg;
+      ret = value;
     }
   else
     {
       if (**strp == '-')
-        errmsg = cgen_parse_signed_integer (cd, strp, opindex, (long *) &value);
+	{
+	  long value;
+	  errmsg = cgen_parse_signed_integer (cd, strp, opindex, &value);
+	  ret = value;
+	}
       else
-        errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, (unsigned long *) &value);
+	{
+	  unsigned long value;
+	  errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, &value);
+	  ret = value;
+	}
     }
-  *valuep = (long) (short) (value & 0xffff);
+
+  *valuep = ((ret & 0xffff) ^ 0x8000) - 0x8000;
   return errmsg;
 }
 
@@ -107,15 +116,16 @@ parse_lo16 (cd, strp, opindex, valuep)
 {
   const char *errmsg;
   enum cgen_parse_operand_result result_type;
-  bfd_vma value;
+  unsigned long ret;
 
   if (**strp == '#')
     ++*strp;
 
   if (strncasecmp (*strp, "lo(", 3) == 0)
     {
-      *strp += 3;
+      bfd_vma value;
 
+      *strp += 3;
 #if 0 
       errmsg = cgen_parse_signed_integer (cd, strp, opindex, valuep);
       if (errmsg != NULL)
@@ -126,21 +136,28 @@ parse_lo16 (cd, strp, opindex, valuep)
         errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_LO16,
                                      &result_type, &value);
       if (**strp != ')')
-        return "missing `)'";
-      ++*strp;
-      if (errmsg == NULL
-          && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
-        value &= 0xffff;
-      *valuep = (long) (short) value;
+        return _("missing `)'");
 
-      return errmsg;
+      ++*strp;
+      ret = value;
     }
-
-  if (**strp == '-')
-    errmsg = cgen_parse_signed_integer (cd, strp, opindex, (long *) &value);
   else
-    errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, (unsigned long *) &value);
-  *valuep = (long) (short) (value & 0xffff);
+    {
+      if (**strp == '-')
+	{
+	  long value;
+	  errmsg = cgen_parse_signed_integer (cd, strp, opindex, &value);
+	  ret = value;
+	}
+      else
+	{
+	  unsigned long value;
+	  errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, &value);
+	  ret = value;
+	}
+    }
+
+  *valuep = ((ret & 0xffff) ^ 0x8000) - 0x8000;
   return errmsg;
 }
 

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Fix cgen warnings in opcodes/
  2002-12-01 22:59 Fix cgen warnings in opcodes/ Alan Modra
  2002-12-02  4:57 ` Alan Modra
@ 2002-12-02 10:53 ` Frank Ch. Eigler
  2002-12-02 14:06   ` Alan Modra
  1 sibling, 1 reply; 5+ messages in thread
From: Frank Ch. Eigler @ 2002-12-02 10:53 UTC (permalink / raw)
  To: cgen, binutils

[-- Attachment #1: Type: text/plain, Size: 295 bytes --]

Hi -

On Mon, Dec 02, 2002 at 05:28:55PM +1030, Alan Modra wrote:
> [...]
> OK to apply?

Thanks for dwelving into this.  Looks okay to me.  One nit:

> [...]
> 	(cgen-desc.c): Include regex.h.

I think this is supposed to be xregex.h, referring to libiberty's
snapshot of glibc regex.


- FChE

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Fix cgen warnings in opcodes/
  2002-12-02 10:53 ` Frank Ch. Eigler
@ 2002-12-02 14:06   ` Alan Modra
  2002-12-02 14:27     ` Frank Ch. Eigler
  0 siblings, 1 reply; 5+ messages in thread
From: Alan Modra @ 2002-12-02 14:06 UTC (permalink / raw)
  To: Frank Ch. Eigler; +Cc: cgen, binutils

On Mon, Dec 02, 2002 at 01:53:57PM -0500, Frank Ch. Eigler wrote:
> > 	(cgen-desc.c): Include regex.h.
> 
> I think this is supposed to be xregex.h, referring to libiberty's
> snapshot of glibc regex.

Fixed and applied.  It wasn't clear that you were approving the
cgen/opc-opinst.scm and cgen/cpu/openrisc.opc changes so they're
not in yet.

Before committing, I updated the copyright dates and noticed that
some files were copyright Redhat.  Should this be changed to
Free Software Foundation?

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Fix cgen warnings in opcodes/
  2002-12-02 14:06   ` Alan Modra
@ 2002-12-02 14:27     ` Frank Ch. Eigler
  0 siblings, 0 replies; 5+ messages in thread
From: Frank Ch. Eigler @ 2002-12-02 14:27 UTC (permalink / raw)
  To: cgen, binutils

[-- Attachment #1: Type: text/plain, Size: 452 bytes --]

Hi -

Alan Mondra wrote:

> [...]
> Before committing, I updated the copyright dates and noticed that
> some files were copyright Redhat.  Should this be changed to
> Free Software Foundation?

You mean the src/cgen files?  CGEN has not been assigned to the FSF,
so no, the Red Hat notices should not be replaced.  If you wish to
contribute nontrivially to CGEN proper, you may propose an additional
appropriate copyright notice for your work.

- FChE

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2002-12-02 22:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-12-01 22:59 Fix cgen warnings in opcodes/ Alan Modra
2002-12-02  4:57 ` Alan Modra
2002-12-02 10:53 ` Frank Ch. Eigler
2002-12-02 14:06   ` Alan Modra
2002-12-02 14:27     ` Frank Ch. Eigler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).