diff options
author | Toon Moene <toon@moene.indiv.nluug.nl> | 2002-01-30 23:59:47 +0100 |
---|---|---|
committer | Toon Moene <toon@gcc.gnu.org> | 2002-01-30 22:59:47 +0000 |
commit | 41ff8055c5caf3e399783c728a6c8a820b2c7a29 (patch) | |
tree | a205c250016e774fe94ee79562543f40dd404200 | |
parent | 86f808dc818c23a87f1554aa0b9c11a112ac4531 (diff) | |
download | gcc-41ff8055c5caf3e399783c728a6c8a820b2c7a29.zip gcc-41ff8055c5caf3e399783c728a6c8a820b2c7a29.tar.gz gcc-41ff8055c5caf3e399783c728a6c8a820b2c7a29.tar.bz2 |
intrin.c (upcasecmp_): New function.
2002-01-30 Toon Moene <toon@moene.indiv.nluug.nl>
* intrin.c (upcasecmp_): New function.
(ffeintrin_cmp_name_): Use it to correctly compare name
and table entry for bsearch.
From-SVN: r49347
-rw-r--r-- | gcc/f/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/f/intrin.c | 20 |
2 files changed, 24 insertions, 2 deletions
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index bccdcae..fb1e75b 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,9 @@ +2002-01-30 Toon Moene <toon@moene.indiv.nluug.nl> + + * intrin.c (upcasecmp_): New function. + (ffeintrin_cmp_name_): Use it to correctly compare name + and table entry for bsearch. + 2002-01-26 Toon Moene <toon@moene.indiv.nluug.nl> * intrin.c (ffeintrin_cmp_name_): Correct comparison diff --git a/gcc/f/intrin.c b/gcc/f/intrin.c index 9759ab7..83a478c 100644 --- a/gcc/f/intrin.c +++ b/gcc/f/intrin.c @@ -1153,7 +1153,23 @@ ffeintrin_check_any_ (ffebld arglist) return FALSE; } -/* Compare name to intrinsic's name. Uses strcmp on arguments' names. +/* Compare a forced-to-uppercase name with a known-upper-case name. */ + +static int +upcasecmp_ (const char *name, const char *ucname) +{ + for ( ; *name != 0 && *ucname != 0; name++, ucname++) + { + int i = TOUPPER(*name) - *ucname; + + if (i != 0) + return i; + } + + return *name - *ucname; +} + +/* Compare name to intrinsic's name. The intrinsics table is sorted on the upper case entries; so first compare irrespective of case on the `uc' entry. If it matches, compare according to the setting of intrinsics case comparison mode. */ @@ -1166,7 +1182,7 @@ ffeintrin_cmp_name_ (const void *name, const void *intrinsic) const char *const ic = ((const struct _ffeintrin_name_ *) intrinsic)->name_ic; int i; - if ((i = strcasecmp (name, uc)) == 0) + if ((i = upcasecmp_ (name, uc)) == 0) { switch (ffe_case_intrin ()) { |