summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToon Moene <toon@moene.indiv.nluug.nl>2002-01-26 17:14:39 +0100
committerToon Moene <toon@gcc.gnu.org>2002-01-26 16:14:39 +0000
commit892c8ea0fa1c75264a967784c5db0f284e669167 (patch)
treeb352262b28188297678bd1fa5c66e5883a8428d3
parentcd74ec597b7e7e6f004c64caf1c9f34ea0d819aa (diff)
downloadgcc-892c8ea0fa1c75264a967784c5db0f284e669167.tar.gz
intrin.c (ffeintrin_cmp_name_): Correct comparison for intrinsics in intrinsic table (intrin.def).
2002-01-26 Toon Moene <toon@moene.indiv.nluug.nl> * intrin.c (ffeintrin_cmp_name_): Correct comparison for intrinsics in intrinsic table (intrin.def). From-SVN: r49248
-rw-r--r--gcc/f/ChangeLog5
-rw-r--r--gcc/f/intrin.c21
2 files changed, 24 insertions, 2 deletions
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index 939b2676fd6..bccdcaebbbd 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -1,3 +1,8 @@
+2002-01-26 Toon Moene <toon@moene.indiv.nluug.nl>
+
+ * intrin.c (ffeintrin_cmp_name_): Correct comparison
+ for intrinsics in intrinsic table (intrin.def).
+
2002-01-22 Zack Weinberg <zack@codesourcery.com>
* bad.c: Include intl.h.
diff --git a/gcc/f/intrin.c b/gcc/f/intrin.c
index 99d849b7271..9759ab70a36 100644
--- a/gcc/f/intrin.c
+++ b/gcc/f/intrin.c
@@ -1153,7 +1153,10 @@ ffeintrin_check_any_ (ffebld arglist)
return FALSE;
}
-/* Compare name to intrinsic's name. Uses strcmp on arguments' names. */
+/* Compare name to intrinsic's name. Uses strcmp on arguments' names.
+ 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. */
static int
ffeintrin_cmp_name_ (const void *name, const void *intrinsic)
@@ -1161,8 +1164,22 @@ ffeintrin_cmp_name_ (const void *name, const void *intrinsic)
const char *const uc = ((const struct _ffeintrin_name_ *) intrinsic)->name_uc;
const char *const lc = ((const struct _ffeintrin_name_ *) intrinsic)->name_lc;
const char *const ic = ((const struct _ffeintrin_name_ *) intrinsic)->name_ic;
+ int i;
+
+ if ((i = strcasecmp (name, uc)) == 0)
+ {
+ switch (ffe_case_intrin ())
+ {
+ case FFE_caseLOWER:
+ return strcmp(name, lc);
+ case FFE_caseINITCAP:
+ return strcmp(name, ic);
+ default:
+ return 0;
+ }
+ }
- return ffesrc_strcmp_2c (ffe_case_intrin (), name, uc, lc, ic);
+ return i;
}
/* Return basic type of intrinsic implementation, based on its