diff options
author | toon <toon@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-01-30 22:59:47 +0000 |
---|---|---|
committer | toon <toon@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-01-30 22:59:47 +0000 |
commit | 265667551e844b258d0244900e0e9295311e9560 (patch) | |
tree | a205c250016e774fe94ee79562543f40dd404200 | |
parent | 74b686923e1a6ac04deaae5e60e5bc0a7475a0ec (diff) | |
download | gcc-265667551e844b258d0244900e0e9295311e9560.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49347 138bc75d-0d04-0410-961f-82ee72b054a4
-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 bccdcaebbbd..fb1e75b7018 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 9759ab70a36..83a478c7065 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 ()) { |