From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22624 invoked by alias); 2 Dec 2002 06:59:03 -0000 Mailing-List: contact cgen-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cgen-owner@sources.redhat.com Received: (qmail 22609 invoked from network); 2 Dec 2002 06:59:01 -0000 Received: from unknown (HELO mta06ps.bigpond.com) (144.135.25.138) by sources.redhat.com with SMTP; 2 Dec 2002 06:59:01 -0000 Received: from bubble.local ([144.135.25.69]) by mta06ps.bigpond.com (Netscape Messaging Server 4.15 mta06ps May 23 2002 23:53:28) with SMTP id H6HCQ700.4OD for ; Mon, 2 Dec 2002 16:58:55 +1000 Received: from CPE-144-136-184-243.sa.bigpond.net.au ([144.136.184.243]) by PSMAM01.mailsvc.email.bigpond.com(MailRouter V3.0n 71/9405107); 02 Dec 2002 16:58:55 Received: (qmail 10181 invoked by uid 179); 2 Dec 2002 06:58:55 -0000 Date: Sun, 01 Dec 2002 22:59:00 -0000 From: Alan Modra To: cgen@sources.redhat.com, binutils@sources.redhat.com Subject: Fix cgen warnings in opcodes/ Message-ID: <20021202065854.GE27956@bubble.sa.bigpond.net.au> Mail-Followup-To: cgen@sources.redhat.com, binutils@sources.redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4i X-SW-Source: 2002-q4/txt/msg00044.txt.bz2 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. : 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 #include +#include #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 *)); /* -- 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); +} /* -- 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