summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoon <toon@138bc75d-0d04-0410-961f-82ee72b054a4>2002-01-30 22:59:47 +0000
committertoon <toon@138bc75d-0d04-0410-961f-82ee72b054a4>2002-01-30 22:59:47 +0000
commit265667551e844b258d0244900e0e9295311e9560 (patch)
treea205c250016e774fe94ee79562543f40dd404200
parent74b686923e1a6ac04deaae5e60e5bc0a7475a0ec (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/f/intrin.c20
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 ())
{