From 5f6d38233069d3e17607cbde28bf413d73ea11ca Mon Sep 17 00:00:00 2001 From: Dave Pitts Date: Sun, 16 Apr 2000 17:54:25 -0700 Subject: [PATCH] Makefile.in ($(srcdir)/c-parse.y: c-parse.in): Enclose the whole message in quotes. * Makefile.in ($(srcdir)/c-parse.y: c-parse.in): Enclose the whole message in quotes. Otherwise, IBM's make program treats the '#' as the start of a comment and ignores the remainder of the line. * c-lex.c (yylex): Change for EBCDIC, lower case characters preceed upper case. * cccp.c (initialize_char_syntax): Allow for holes in EBCDIC. * cexp.y (initialize_random_junk): Likewise. * cppfiles.c (find_include_file): Cast alloca return value. * cppinit.c (initialize_standard_includes): Likewise. * cpplib.c (cpp_define, cpp_undef): Likewise. * defaults.h (ASM_OUTPUT_ASCII): Use ISPRINT. * final.c (output_asm_insn): Allow for holes in EBCDIC. * fold-const.c (CHARMASK): New. (real_hex_to_f): Use it. * real.c (CHARMASK): New. (etoasc, asctoeg): Use it. (asctoeg): EBCDIC lower case characters preceed upper case. From-SVN: r33192 --- gcc/ChangeLog | 97 ++++++++++++++++++++++++++++++++---------------- gcc/Makefile.in | 2 +- gcc/c-lex.c | 2 +- gcc/cccp.c | 11 ++++-- gcc/cexp.y | 11 ++++-- gcc/cppfiles.c | 2 +- gcc/cppinit.c | 2 +- gcc/cpplib.c | 6 +-- gcc/defaults.h | 2 +- gcc/final.c | 3 +- gcc/fold-const.c | 14 +++++-- gcc/real.c | 13 +++++-- 12 files changed, 110 insertions(+), 55 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9f8908778af..c629f81dcfe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,38 @@ +2000-04-12 Dave Pitts + + * Makefile.in ($(srcdir)/c-parse.y: c-parse.in): Enclose the whole + message in quotes. Otherwise, IBM's make program treats the '#' as the + start of a comment and ignores the remainder of the line. + + * c-lex.c (yylex): Change for EBCDIC, lower case characters preceed + upper case. + * cccp.c (initialize_char_syntax): Allow for holes in EBCDIC. + * cexp.y (initialize_random_junk): Likewise. + * cppfiles.c (find_include_file): Cast alloca return value. + * cppinit.c (initialize_standard_includes): Likewise. + * cpplib.c (cpp_define, cpp_undef): Likewise. + * defaults.h (ASM_OUTPUT_ASCII): Use ISPRINT. + * final.c (output_asm_insn): Allow for holes in EBCDIC. + * fold-const.c (CHARMASK): New. + (real_hex_to_f): Use it. + * real.c (CHARMASK): New. + (etoasc, asctoeg): Use it. + (asctoeg): EBCDIC lower case characters preceed upper case. + + * i370.c (mvs_add_label): Change spacing for coding conventions. + * i370.h (ASM_OUTPUT_CASE_LABEL): Change to the data CSECT for the + outputing case vectors. + (ASM_OUTPUT_CASE_END): New, put assembler back into code CSECT. + (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Remove page check, + since vector in in the data CSECT. + (ASM_OUTPUT_REG_POP, ASM_OUTPUT_REG_PUSH): Restore to correct operation. * i370.md (Many patterns): Put the length in the XL directives. + (movdi): Put back STM and MVC in definition. + (floatsidf2): Correct TARGET_ELF_ABI pattern and add back the LE370 + pattern using the TCA. + * oe.h (CPP_SPEC): Added to allow trigraphs. + * xm-oe.h (HOST_BITS_PER_LONGLONG): Change to 32. IBM's compiler does + not support the "long long" type. + 2000-04-16 Mark Mitchell * config/mips/mips-protos.h (mips_legitimate_address_p): New @@ -39,9 +74,9 @@ 2004-04-16 Neil Booth - * cpphash.h (SYNTAX_INCLUDE, SYNTAX_ASSERT, directive_handler): new. - * cpplib.c: Add new syntax flags to directive table, and - supporting macros. + * cpphash.h (SYNTAX_INCLUDE, SYNTAX_ASSERT, directive_handler): new. + * cpplib.c: Add new syntax flags to directive table, and + supporting macros. 2000-04-15 Ulrich Drepper @@ -225,8 +260,8 @@ Fri Apr 14 10:54:22 2000 Jim Wilson 2000-04-14 Richard Henderson - * fold-const.c (extract_muldiv): Don't distribute and widen - multiply across plus for non-sizetype unsigned types. + * fold-const.c (extract_muldiv): Don't distribute and widen + multiply across plus for non-sizetype unsigned types. 2000-04-14 Richard Henderson @@ -254,7 +289,7 @@ Thu Apr 13 19:39:56 2000 Clinton Popetz 2000-04-13 Andreas Jaeger * config/mips/mips.c (expand_block_move): Pass alignment - argument to move_by_pieces in bits, not bytes. + argument to move_by_pieces in bits, not bytes. * config/mips/linux.h (CPP_PREDEFINES): Also define __PIC__ and __pic__ for little endian. @@ -357,8 +392,8 @@ Wed Apr 12 15:54:11 MET DST 2000 Jan Hubicka Wed Apr 12 07:51:54 2000 Catherine Moore - * calls.c (emit_library_call_value_1): Change 3rd arg to - locate_and_pad_parm to disregard the setting of partial. + * calls.c (emit_library_call_value_1): Change 3rd arg to + locate_and_pad_parm to disregard the setting of partial. Wed Apr 12 08:47:38 2000 Richard Kenner @@ -3889,11 +3924,11 @@ Thu Mar 16 02:14:16 2000 Hans-Peter Nilsson 2000-01-27 Clinton Popetz - * rs6000.c (rs6000_emit_load_toc_table): Use "LCG" and - reload_toc_labelno for non-prologue TOC reloads. Also, don't - increment rs6000_pic_labelno here. - (rs6000_emit_prologue): Pass TRUE to rs6000_emit_load_toc_table, - and increment rs6000_pic_labelno here. + * rs6000.c (rs6000_emit_load_toc_table): Use "LCG" and + reload_toc_labelno for non-prologue TOC reloads. Also, don't + increment rs6000_pic_labelno here. + (rs6000_emit_prologue): Pass TRUE to rs6000_emit_load_toc_table, + and increment rs6000_pic_labelno here. 2000-01-24 Geoffrey Keating @@ -4072,29 +4107,29 @@ Thu Mar 16 02:14:16 2000 Hans-Peter Nilsson 2000-01-07 David Edelsohn - * rs6000.c (processor_target_table): Add power3 as alias for 630. - * aix43.h: Revert Aug 2 change. - (HAS_INIT_SECTION): Define, not visible yet. - (LD_INIT_SWITCH): Define, not visible yet. - * t-aix43 (MULTILIB_OPTIONS): Revert Aug 2 change. + * rs6000.c (processor_target_table): Add power3 as alias for 630. + * aix43.h: Revert Aug 2 change. + (HAS_INIT_SECTION): Define, not visible yet. + (LD_INIT_SWITCH): Define, not visible yet. + * t-aix43 (MULTILIB_OPTIONS): Revert Aug 2 change. 2000-01-04 Joel Sherrill (joel@OARcorp.com> - * config/rs6000/rtems.h: Include config/rtems.h. + * config/rs6000/rtems.h: Include config/rtems.h. 2000-01-04 David Edelsohn - * rs6000.h (HANDLE_PRAGMA_PACK): Define. - (SLOW_UNALIGNED_ACCESS): Define. - (CASE_VECTOR_MODE): Always use 32-bit offsets. - (ASM_FILE_END): Generate 64-bit symbol in 64-bit mode. - (EXTRA_SECTOIN_FUNCTIONS): Indent .csect pseudo-op. - (toc_section): Likewise and .toc pseudo-op. - (ASM_DECLARE_FUNCTION): Likewise. Align text more strictly in - 64-bit mode. - (TEXT_SECTION_ASM_OP): Likewise. - (ASM_OUTPUT_ADD_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Always use - 32-bit offsets. + * rs6000.h (HANDLE_PRAGMA_PACK): Define. + (SLOW_UNALIGNED_ACCESS): Define. + (CASE_VECTOR_MODE): Always use 32-bit offsets. + (ASM_FILE_END): Generate 64-bit symbol in 64-bit mode. + (EXTRA_SECTOIN_FUNCTIONS): Indent .csect pseudo-op. + (toc_section): Likewise and .toc pseudo-op. + (ASM_DECLARE_FUNCTION): Likewise. Align text more strictly in + 64-bit mode. + (TEXT_SECTION_ASM_OP): Likewise. + (ASM_OUTPUT_ADD_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Always use + 32-bit offsets. 1999-12-17 Jakub Jelinek @@ -4111,7 +4146,7 @@ Thu Mar 16 02:14:16 2000 Hans-Peter Nilsson 2000-01-05 Franz Sirl - * rs6000.h: Continue cleanup. + * rs6000.h: Continue cleanup. * aix.h: Likewise. * lynx.h: Likewise. * netware.h: Likewise. diff --git a/gcc/Makefile.in b/gcc/Makefile.in index ad582c4c49c..493d0805810 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1360,7 +1360,7 @@ $(srcdir)/c-parse.y: c-parse.in $(srcdir)/c-gperf.h: c-parse.gperf gperf -L C -F ', 0, 0' -p -j1 -i 1 -g -o -t -G -N is_reserved_word \ -k1,3,$$ $(srcdir)/c-parse.gperf >tmp-gperf.h || ( \ - echo "See " $(website)/cvs.html#generated_files >&2 ; \ + echo "See $(website)/cvs.html#generated_files" >&2 ; \ exit 1 ) $(SHELL) $(srcdir)/move-if-change tmp-gperf.h $(srcdir)/c-gperf.h diff --git a/gcc/c-lex.c b/gcc/c-lex.c index 2f8a8403d69..d7697067ac7 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -1625,7 +1625,7 @@ yylex () floatflag = AFTER_EXPON; break; /* start of exponent */ } - else if (c >= 'a') + else if (c >= 'a' && c <= 'f') { c = c - 'a' + 10; } diff --git a/gcc/cccp.c b/gcc/cccp.c index e91d8cf1b4c..9a023334409 100644 --- a/gcc/cccp.c +++ b/gcc/cccp.c @@ -10249,10 +10249,13 @@ initialize_char_syntax () * refer to them. */ for (i = 'a'; i <= 'z'; i++) { - is_idchar[TOUPPER(i)] = 1; - is_idchar[i] = 1; - is_idstart[TOUPPER(i)] = 1; - is_idstart[i] = 1; + /* SKIP EBCIDIC holes, char must be a valid low case char */ + if (ISLOWER(i)) { + is_idchar[TOUPPER(i)] = 1; + is_idchar[i] = 1; + is_idstart[TOUPPER(i)] = 1; + is_idstart[i] = 1; + } } for (i = '0'; i <= '9'; i++) is_idchar[i] = 1; diff --git a/gcc/cexp.y b/gcc/cexp.y index 1fb2f5d9f42..83f4cede637 100644 --- a/gcc/cexp.y +++ b/gcc/cexp.y @@ -1114,10 +1114,13 @@ initialize_random_junk () * refer to them. */ for (i = 'a'; i <= 'z'; i++) { - ++is_idchar[TOUPPER(i)]; - ++is_idchar[i]; - ++is_idstart[TOUPPER(i)]; - ++is_idstart[i]; + /* SKIP EBCIDIC holes, char must be a valid low case char */ + if (ISLOWER(i)) { + ++is_idchar[TOUPPER(i)]; + ++is_idchar[i]; + ++is_idstart[TOUPPER(i)]; + ++is_idstart[i]; + } } for (i = '0'; i <= '9'; i++) ++is_idchar[i]; diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c index 59ee7c76f03..cc891d45729 100644 --- a/gcc/cppfiles.c +++ b/gcc/cppfiles.c @@ -284,7 +284,7 @@ find_include_file (pfile, fname, search_start, ihash, before) else { /* Search directory path, trying to open the file. */ - name = alloca (strlen (fname) + pfile->max_include_len + name = (char *) alloca (strlen (fname) + pfile->max_include_len + 2 + INCLUDE_LEN_FUDGE); do { diff --git a/gcc/cppinit.c b/gcc/cppinit.c index 5174da8d5bf..7d20b2c95c5 100644 --- a/gcc/cppinit.c +++ b/gcc/cppinit.c @@ -795,7 +795,7 @@ initialize_standard_includes (pfile) These have /usr/local/lib/gcc... replaced by specd_prefix. */ if (specd_prefix != 0) { - char *default_prefix = alloca (sizeof GCC_INCLUDE_DIR - 7); + char *default_prefix = (char *) alloca (sizeof GCC_INCLUDE_DIR - 7); /* Remove the `include' from /usr/local/lib/gcc.../include. GCC_INCLUDE_DIR will always end in /include. */ int default_len = sizeof GCC_INCLUDE_DIR - 8; diff --git a/gcc/cpplib.c b/gcc/cpplib.c index cd8285b0d59..98bd9335c90 100644 --- a/gcc/cpplib.c +++ b/gcc/cpplib.c @@ -1705,7 +1705,7 @@ cpp_define (pfile, str) if (p) { count = strlen (str) + 2; - buf = alloca (count); + buf = (char *) alloca (count); memcpy (buf, str, count - 2); buf[p - str] = ' '; buf[count - 2] = '\n'; @@ -1714,7 +1714,7 @@ cpp_define (pfile, str) else { count = strlen (str) + 4; - buf = alloca (count); + buf = (char *) alloca (count); memcpy (buf, str, count - 4); strcpy (&buf[count-4], " 1\n"); } @@ -1734,7 +1734,7 @@ cpp_undef (pfile, macro) { /* Copy the string so we can append a newline. */ size_t len = strlen (macro); - char *buf = alloca (len + 2); + char *buf = (char *) alloca (len + 2); memcpy (buf, macro, len); buf[len] = '\n'; buf[len + 1] = '\0'; diff --git a/gcc/defaults.h b/gcc/defaults.h index 0582c00c058..b551fea125f 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -80,7 +80,7 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) register int c = p[i]; \ if (c == '\"' || c == '\\') \ putc ('\\', asm_out_file); \ - if (c >= ' ' && c < 0177) \ + if (ISPRINT(c)) \ putc (c, asm_out_file); \ else \ { \ diff --git a/gcc/final.c b/gcc/final.c index ade9da92964..1d4666ed764 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -3457,8 +3457,7 @@ output_asm_insn (template, operands) Letters `acln' are implemented directly. Other letters are passed to `output_operand' so that the PRINT_OPERAND macro can define them. */ - else if ((*p >= 'a' && *p <= 'z') - || (*p >= 'A' && *p <= 'Z')) + else if (ISLOWER(*p) || ISUPPER(*p)) { int letter = *p++; c = atoi (p); diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 991dddda973..e0d0f00cb4e 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -106,6 +106,14 @@ static int count_cond PARAMS ((tree, int)); #define BRANCH_COST 1 #endif +#if defined(HOST_EBCDIC) +/* bit 8 is significant in EBCDIC */ +#define CHARMASK 0xff +#else +#define CHARMASK 0x7f +#endif + + /* We know that A1 + B1 = SUM1, using 2's complement arithmetic and ignoring overflow. Suppose A, B and SUM have the same respective signs as A1, B1, and SUM1. Then this yields nonzero if overflow occurred during the @@ -1091,8 +1099,8 @@ real_hex_to_f (s, mode) if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f')) { - k = c & 0x7f; - if (k >= 'a') + k = c & CHARMASK; + if (k >= 'a' && k <= 'f') k = k - 'a' + 10; else if (k >= 'A') k = k - 'A' + 10; @@ -1137,7 +1145,7 @@ real_hex_to_f (s, mode) The exponent field is a decimal integer. */ while (ISDIGIT(*p)) { - k = (*p++ & 0x7f) - '0'; + k = (*p++ & CHARMASK) - '0'; expon = 10 * expon + k; } diff --git a/gcc/real.c b/gcc/real.c index 6acd2bf376a..2022aacbeb9 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -337,6 +337,13 @@ do { \ /* The exponent of 1.0 */ #define EXONE (0x3fff) +#if defined(HOST_EBCDIC) +/* bit 8 is significant in EBCDIC */ +#define CHARMASK 0xff +#else +#define CHARMASK 0x7f +#endif + extern int extra_warnings; extern unsigned EMUSHORT ezero[], ehalf[], eone[], etwo[]; extern unsigned EMUSHORT elog2[], esqrt2[]; @@ -4981,7 +4988,7 @@ etoasc (x, string, ndigs) /* Round up and propagate carry-outs */ roun: --s; - k = *s & 0x7f; + k = *s & CHARMASK; /* Carry out to most significant digit? */ if (k == '.') { @@ -5142,7 +5149,7 @@ asctoeg (ss, y, oprec) nxtcom: if (*s >= '0' && *s <= '9') k = *s - '0'; - else if (*s >= 'a') + else if (*s >= 'a' && *s <= 'f') k = 10 + *s - 'a'; else k = 10 + *s - 'A'; @@ -5160,7 +5167,7 @@ asctoeg (ss, y, oprec) || (*sp >= 'A' && *sp <= 'F')))) ++sp; /* Check for syntax error */ - c = *sp & 0x7f; + c = *sp & CHARMASK; if ((base != 10 || ((c != 'e') && (c != 'E'))) && (base != 16 || ((c != 'p') && (c != 'P'))) && (c != '\0')