Commit b6e2128e by Tobias Schlüter

intrinsic.c (conv_name): Let gfc_get_string handle the format.

* intrinsic.c (conv_name): Let gfc_get_string handle the format.
(find_conv): Compare pointers instead of calling strcmp.
(find_sym): Likewise, but ensure that the compared pointer is in
the global string table.

From-SVN: r123346
parent 39e6a377
2007-03-29 Tobias Schlüter <tobi@gcc.gnu.org>
* intrinsic.c (conv_name): Let gfc_get_string handle the format.
(find_conv): Compare pointers instead of calling strcmp.
(find_sym): Likewise, but ensure that the compared pointer is in
the global string table.
2007-03-28 Tobias Schlüter <tobi@gcc.gnu.org> 2007-03-28 Tobias Schlüter <tobi@gcc.gnu.org>
* gfc-internals.texi: Fix output filename. Merge type index into * gfc-internals.texi: Fix output filename. Merge type index into
......
...@@ -120,12 +120,9 @@ gfc_get_intrinsic_sub_symbol (const char *name) ...@@ -120,12 +120,9 @@ gfc_get_intrinsic_sub_symbol (const char *name)
static const char * static const char *
conv_name (gfc_typespec *from, gfc_typespec *to) conv_name (gfc_typespec *from, gfc_typespec *to)
{ {
static char name[30]; return gfc_get_string ("__convert_%c%d_%c%d",
gfc_type_letter (from->type), from->kind,
sprintf (name, "__convert_%c%d_%c%d", gfc_type_letter (from->type), gfc_type_letter (to->type), to->kind);
from->kind, gfc_type_letter (to->type), to->kind);
return gfc_get_string (name);
} }
...@@ -144,7 +141,7 @@ find_conv (gfc_typespec *from, gfc_typespec *to) ...@@ -144,7 +141,7 @@ find_conv (gfc_typespec *from, gfc_typespec *to)
sym = conversion; sym = conversion;
for (i = 0; i < nconv; i++, sym++) for (i = 0; i < nconv; i++, sym++)
if (strcmp (target, sym->name) == 0) if (target == sym->name)
return sym; return sym;
return NULL; return NULL;
...@@ -701,9 +698,14 @@ add_sym_5s (const char *name, int elemental, bt type, int kind, int standard, ...@@ -701,9 +698,14 @@ add_sym_5s (const char *name, int elemental, bt type, int kind, int standard,
static gfc_intrinsic_sym * static gfc_intrinsic_sym *
find_sym (gfc_intrinsic_sym *start, int n, const char *name) find_sym (gfc_intrinsic_sym *start, int n, const char *name)
{ {
/* name may be a user-supplied string, so we must first make sure
that we're comparing against a pointer into the global string
table. */
const char *p = gfc_get_string (name);
while (n > 0) while (n > 0)
{ {
if (strcmp (name, start->name) == 0) if (p == start->name)
return start; return start;
start++; start++;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment