summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/cppexp.c11
-rw-r--r--gcc/cpplex.c11
-rw-r--r--gcc/cppmain.c1
4 files changed, 12 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index face7bda47b..86b64a7824d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2001-11-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+ * cppexp.c (parse_number): Use ISXDIGIT/hex_value.
+ * cpplex.c (hex_digit_value): Use hex_p/hex_value.
+ * cppmain.c (general_init): Call hex_init.
+
* config.gcc (i[34567]86-dg-dgux*): Don't set `out_file'.
* i386/dgux.h (ASM_FILE_START): Set to the meaningful portions
diff --git a/gcc/cppexp.c b/gcc/cppexp.c
index ac222eebda8..f7fe054b7e0 100644
--- a/gcc/cppexp.c
+++ b/gcc/cppexp.c
@@ -129,14 +129,9 @@ parse_number (pfile, tok)
{
c = *p;
- if (ISDIGIT (c))
- digit = c - '0';
- /* We believe that in all live character sets, a-f are
- consecutive, and so are A-F. */
- else if (base == 16 && c >= 'a' && c <= 'f')
- digit = c - 'a' + 10;
- else if (base == 16 && c >= 'A' && c <= 'F')
- digit = c - 'A' + 10;
+ if (ISDIGIT (c)
+ || (base == 16 && ISXDIGIT (c)))
+ digit = hex_value (c);
else
break;
diff --git a/gcc/cpplex.c b/gcc/cpplex.c
index a15fccac22e..f9af8b7f5b7 100644
--- a/gcc/cpplex.c
+++ b/gcc/cpplex.c
@@ -1601,13 +1601,10 @@ static unsigned int
hex_digit_value (c)
unsigned int c;
{
- if (c >= 'a' && c <= 'f')
- return c - 'a' + 10;
- if (c >= 'A' && c <= 'F')
- return c - 'A' + 10;
- if (c >= '0' && c <= '9')
- return c - '0';
- abort ();
+ if (hex_p (c))
+ return hex_value (c);
+ else
+ abort ();
}
/* Parse a '\uNNNN' or '\UNNNNNNNN' sequence. Returns 1 to indicate
diff --git a/gcc/cppmain.c b/gcc/cppmain.c
index 246c1522ab2..02dfdb7c158 100644
--- a/gcc/cppmain.c
+++ b/gcc/cppmain.c
@@ -100,6 +100,7 @@ general_init (argv0)
xmalloc_set_program_name (progname);
+ hex_init ();
gcc_init_libintl ();
}