From faf318664d85a4bfcf278a4475904ec850b4efb7 Mon Sep 17 00:00:00 2001 From: "Kaveh R. Ghazi" Date: Sun, 16 Dec 2001 13:58:07 +0000 Subject: [PATCH] c-lex.c (lex_number): Use ISXDIGIT/hex_value. * c-lex.c (lex_number): Use ISXDIGIT/hex_value. * vax/xm-vms.h (FILE_NAME_NONDIRECTORY): Use ISUPPER/TOLOWER. * fold-const.c (real_hex_to_f): Use hex_value. * real.c (asctoeg): Use hex_value & ISXDIGIT. * toplev.c (toplev_main): Call hex_init. * tradcpp.c (main): Call hex_init. From-SVN: r48068 --- gcc/ChangeLog | 7 +++++++ gcc/c-lex.c | 13 +++---------- gcc/config/vax/xm-vms.h | 2 +- gcc/f/ChangeLog | 6 ++++++ gcc/f/lex.c | 16 ++-------------- gcc/f/target.c | 16 ++++------------ gcc/fold-const.c | 8 +------- gcc/java/ChangeLog | 4 ++++ gcc/java/lex.c | 8 +++----- gcc/real.c | 11 ++--------- gcc/toplev.c | 2 ++ gcc/tradcpp.c | 2 ++ 12 files changed, 37 insertions(+), 58 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 35ae8a3f417..3841b9d6e2b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2001-12-16 Kaveh R. Ghazi + * c-lex.c (lex_number): Use ISXDIGIT/hex_value. + * vax/xm-vms.h (FILE_NAME_NONDIRECTORY): Use ISUPPER/TOLOWER. + * fold-const.c (real_hex_to_f): Use hex_value. + * real.c (asctoeg): Use hex_value & ISXDIGIT. + * toplev.c (toplev_main): Call hex_init. + * tradcpp.c (main): Call hex_init. + * nextstep-protos.h: New file. * nextstep.c: Include "rtl.h", "output.h" & "tm_p.h". * nextstep.h (INCLUDE_DEFAULTS): Delete LOCAL_INCLUDE_DIR and diff --git a/gcc/c-lex.c b/gcc/c-lex.c index e70be7028e6..7d532b25237 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -904,9 +904,10 @@ lex_number (str, len) /* It is not a decimal point. It should be a digit (perhaps a hex digit). */ - if (ISDIGIT (c)) + if (ISDIGIT (c) + || (base == 16 && ISXDIGIT (c))) { - n = c - '0'; + n = hex_value (c); } else if (base <= 10 && (c == 'e' || c == 'E')) { @@ -919,14 +920,6 @@ lex_number (str, len) floatflag = AFTER_EXPON; break; /* start of exponent */ } - else if (base == 16 && c >= 'a' && c <= 'f') - { - n = c - 'a' + 10; - } - else if (base == 16 && c >= 'A' && c <= 'F') - { - n = c - 'A' + 10; - } else { p--; diff --git a/gcc/config/vax/xm-vms.h b/gcc/config/vax/xm-vms.h index ba88d25736f..eaf5f3bf510 100644 --- a/gcc/config/vax/xm-vms.h +++ b/gcc/config/vax/xm-vms.h @@ -66,7 +66,7 @@ Boston, MA 02111-1307, USA. */ char * pnt_ = (C), * pnt1_; \ pnt1_ = pnt_ - 1; \ while (*++pnt1_) \ - if ((*pnt1_ >= 'A' && *pnt1_ <= 'Z')) *pnt1_ |= 0x20; \ + if (ISUPPER (*pnt1_)) *pnt1_ = TOLOWER (*pnt1_); \ pnt1_ = strrchr (pnt_, ']'); \ pnt1_ = (pnt1_ == 0 ? strrchr (pnt_, '>') : pnt1_); \ pnt1_ = (pnt1_ == 0 ? strrchr (pnt_, ':') : pnt1_); \ diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 1e6193af51c..6dfb6b8adff 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,9 @@ +Sun Dec 16 08:52:48 2001 Kaveh R. Ghazi + + * lex.c (ffelex_backslash_, ffelex_cfebackslash_): Use hex_value. + * target.c (ffetarget_integerhex, ffetarget_typeless_hex): Use + hex_p/hex_value. + 2001-12-14 Roger Sayle * com-rt.def: Use __builtin_sqrt instead of __builtin_fsqrt. diff --git a/gcc/f/lex.c b/gcc/f/lex.c index d0aa829dc77..616965642a1 100644 --- a/gcc/f/lex.c +++ b/gcc/f/lex.c @@ -396,13 +396,7 @@ ffelex_backslash_ (int c, ffewhereColumnNumber col) case 2: if (ISXDIGIT (c)) { - code *= 16; - if (c >= 'a' && c <= 'f') - code += c - 'a' + 10; - if (c >= 'A' && c <= 'F') - code += c - 'A' + 10; - if (ISDIGIT (c)) - code += c - '0'; + code = (code * 16) + hex_value (c); if (code != 0 || count != 0) { if (count == 0) @@ -603,13 +597,7 @@ ffelex_cfebackslash_ (int *use_d, int *d, FILE *finput) *d = c; break; } - code *= 16; - if (c >= 'a' && c <= 'f') - code += c - 'a' + 10; - if (c >= 'A' && c <= 'F') - code += c - 'A' + 10; - if (ISDIGIT (c)) - code += c - '0'; + code = (code * 16) + hex_value (c); if (code != 0 || count != 0) { if (count == 0) diff --git a/gcc/f/target.c b/gcc/f/target.c index 7bda0328f6c..11fb0b1d83b 100644 --- a/gcc/f/target.c +++ b/gcc/f/target.c @@ -1447,12 +1447,8 @@ ffetarget_integerhex (ffetargetIntegerDefault *val, ffelexToken integer) bad_digit = FALSE; while (c != '\0') { - if ((c >= 'A') && (c <= 'F')) - c = c - 'A' + 10; - else if ((c >= 'a') && (c <= 'f')) - c = c - 'a' + 10; - else if (ISDIGIT (c)) - c -= '0'; + if (hex_p (c)) + c = hex_value (c); else { bad_digit = TRUE; @@ -2482,12 +2478,8 @@ ffetarget_typeless_hex (ffetargetTypeless *xvalue, ffelexToken token) new_value <<= 4; if ((new_value >> 4) != value) overflow = TRUE; - if (ISDIGIT (c)) - new_value += c - '0'; - else if ((c >= 'A') && (c <= 'F')) - new_value += c - 'A' + 10; - else if ((c >= 'a') && (c <= 'f')) - new_value += c - 'a' + 10; + if (hex_p (c)) + new_value += hex_value (c); else bad_digit = TRUE; value = new_value; diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 8ac7f5107b2..79387fbc6bc 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -1170,13 +1170,7 @@ real_hex_to_f (s, mode) { if (ISXDIGIT (c)) { - k = c & CHARMASK; - if (k >= 'a' && k <= 'f') - k = k - 'a' + 10; - else if (k >= 'A') - k = k - 'A' + 10; - else - k = k - '0'; + k = hex_value (c & CHARMASK); if ((high & 0xf0000000) == 0) { diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 18970fa1e45..8436c52d78a 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,7 @@ +2001-12-16 Kaveh R. Ghazi + + * lex.c (java_read_unicode, java_lex): Use hex_p/hex_value. + 2001-12-16 Bryce McKinlay * decl.c (java_init_decl_processing): Build otable_type correctly. diff --git a/gcc/java/lex.c b/gcc/java/lex.c index e0595e921a0..36e3827dea8 100644 --- a/gcc/java/lex.c +++ b/gcc/java/lex.c @@ -567,10 +567,8 @@ java_read_unicode (lex, unicode_escape_p) { if ((c = java_read_char (lex)) == UEOF) return UEOF; - if (ISDIGIT (c)) - unicode |= (unicode_t)((c-'0') << shift); - else if ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) - unicode |= (unicode_t)((10+(c | 0x20)-'a') << shift); + if (hex_p (c)) + unicode |= (unicode_t)(hex_value (c) << shift); else java_lex_error ("Non hex digit in Unicode escape sequence", 0); } @@ -1064,7 +1062,7 @@ java_lex (java_lval) { /* We store in a string (in case it turns out to be a FP) and in PARTS if we have to process a integer literal. */ - int numeric = (ISDIGIT (c) ? c-'0' : 10 +(c|0x20)-'a'); + int numeric = hex_value (c); int count; /* Remember when we find a valid hexadecimal digit */ diff --git a/gcc/real.c b/gcc/real.c index 3c9160637e9..dd62aeca23a 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -5190,12 +5190,7 @@ asctoeg (ss, y, oprec) trail = 0; nxtcom: - if (ISDIGIT (*s)) - k = *s - '0'; - else if (*s >= 'a' && *s <= 'f') - k = 10 + *s - 'a'; - else - k = 10 + *s - 'A'; + k = hex_value(*s); if ((k >= 0) && (k < base)) { /* Ignore leading zeros */ @@ -5205,9 +5200,7 @@ asctoeg (ss, y, oprec) if ((trail == 0) && (decflg != 0)) { sp = s; - while (ISDIGIT (*sp) - || (base == 16 && ((*sp >= 'a' && *sp <= 'f') - || (*sp >= 'A' && *sp <= 'F')))) + while (ISDIGIT (*sp) || (base == 16 && ISXDIGIT (*sp))) ++sp; /* Check for syntax error */ c = *sp & CHARMASK; diff --git a/gcc/toplev.c b/gcc/toplev.c index 342c6cc1467..1f9a7411b10 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -5154,6 +5154,8 @@ toplev_main (argc, argv) int argc; char **argv; { + hex_init (); + /* Initialization of GCC's environment, and diagnostics. */ general_init (argv [0]); diff --git a/gcc/tradcpp.c b/gcc/tradcpp.c index 1b57f161337..c7af4c72d4f 100644 --- a/gcc/tradcpp.c +++ b/gcc/tradcpp.c @@ -515,6 +515,8 @@ main (argc, argv) pending_dir *pend = (pending_dir *) xcalloc (argc, sizeof (pending_dir)); int no_standard_includes = 0; + hex_init (); + #ifdef RLIMIT_STACK /* Get rid of any avoidable limit on stack size. */ { -- 2.30.2