+1999-12-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * class.c (get_vtable_name): Use a literal format string and
+ VTABLE_NAME_PREFIX macro instead of VTABLE_NAME_FORMAT.
+ (prepare_fresh_vtable): Likewise.
+
+ * cp-tree.h (VTABLE_NAME_PREFIX): Define this instead of
+ VTABLE_NAME_FORMAT.
+
+ * decl.c (make_rtl_for_local_static): Remove unused variable `type'.
+
+ * init.c (build_vec_init): Initialize variable `try_body'.
+
+ * lex.c (yyerror): Don't call a variadic function with a
+ non-literal format string.
+
+ * optimize.c (optimize_function): Call memset, not bzero.
+
+ * pt.c (for_each_template_parm_r): Add static prototype.
+
11999-12-09 Andreas Jaeger <aj@suse.de>
* except.c (expand_throw): Add static attribute to match
tree type;
{
tree type_id = build_typename_overload (type);
- char *buf = (char *) alloca (strlen (VTABLE_NAME_FORMAT)
+ char *buf = (char *) alloca (strlen (VTABLE_NAME_PREFIX)
+ IDENTIFIER_LENGTH (type_id) + 2);
const char *ptr = IDENTIFIER_POINTER (type_id);
int i;
while (ptr[i] >= '0' && ptr[i] <= '9')
i += 1;
#endif
- sprintf (buf, VTABLE_NAME_FORMAT, ptr+i);
+ sprintf (buf, "%s%s", VTABLE_NAME_PREFIX, ptr+i);
return get_identifier (buf);
}
sprintf (buf1, "%s%c%s", TYPE_ASSEMBLER_NAME_STRING (for_type), joiner,
buf2);
- buf = (char *) alloca (strlen (VTABLE_NAME_FORMAT) + strlen (buf1) + 1);
- sprintf (buf, VTABLE_NAME_FORMAT, buf1);
+ buf = (char *) alloca (strlen (VTABLE_NAME_PREFIX) + strlen (buf1) + 1);
+ sprintf (buf, "%s%s", VTABLE_NAME_PREFIX, buf1);
name = get_identifier (buf);
/* If this name doesn't clash, then we can use it, otherwise
sprintf (buf1, "%s%c%s%c%d",
TYPE_ASSEMBLER_NAME_STRING (basetype), joiner,
buf2, joiner, j);
- buf = (char *) alloca (strlen (VTABLE_NAME_FORMAT)
+ buf = (char *) alloca (strlen (VTABLE_NAME_PREFIX)
+ strlen (buf1) + 1);
- sprintf (buf, VTABLE_NAME_FORMAT, buf1);
+ sprintf (buf, "%s%s", VTABLE_NAME_PREFIX, buf1);
name = get_identifier (buf);
/* If this name doesn't clash, then we can use it,
#define AUTO_TEMP_NAME "_$tmp_"
#define AUTO_TEMP_FORMAT "_$tmp_%d"
#define VTABLE_BASE "$vb"
-#define VTABLE_NAME_FORMAT (flag_vtable_thunks ? "__vt_%s" : "_vt$%s")
+#define VTABLE_NAME_PREFIX (flag_vtable_thunks ? "__vt_" : "_vt$")
#define VFIELD_BASE "$vf"
#define VFIELD_NAME "_vptr$"
#define VFIELD_NAME_FORMAT "_vptr$%s"
#define AUTO_TEMP_NAME "_.tmp_"
#define AUTO_TEMP_FORMAT "_.tmp_%d"
#define VTABLE_BASE ".vb"
-#define VTABLE_NAME_FORMAT (flag_vtable_thunks ? "__vt_%s" : "_vt.%s")
+#define VTABLE_NAME_PREFIX (flag_vtable_thunks ? "__vt_" : "_vt.")
#define VFIELD_BASE ".vf"
#define VFIELD_NAME "_vptr."
#define VFIELD_NAME_FORMAT "_vptr.%s"
#define AUTO_TEMP_FORMAT "__tmp_%d"
#define VTABLE_BASE "__vtb"
#define VTABLE_NAME "__vt_"
-#define VTABLE_NAME_FORMAT (flag_vtable_thunks ? "__vt_%s" : "_vt_%s")
+#define VTABLE_NAME_PREFIX (flag_vtable_thunks ? "__vt_" : "_vt_")
#define VTABLE_NAME_P(ID_NODE) \
(!strncmp (IDENTIFIER_POINTER (ID_NODE), VTABLE_NAME, \
sizeof (VTABLE_NAME) - 1))
make_rtl_for_local_static (decl)
tree decl;
{
- tree type = TREE_TYPE (decl);
const char *asmspec = NULL;
/* If we inlined this variable, we could see it's declaration
tree compound_stmt;
int destroy_temps;
tree try_block = NULL_TREE;
- tree try_body;
+ tree try_body = NULL_TREE;
int num_initialized_elts = 0;
maxindex = cp_convert (ptrdiff_type_node, maxindex);
const char *string;
{
extern int end_of_file;
- char buf[200];
-
- strcpy (buf, string);
/* We can't print string and character constants well
because the token_buffer contains the result of processing escapes. */
if (end_of_file)
- strcat (buf, input_redirected ()
- ? " at end of saved text"
- : " at end of input");
+ {
+ if (input_redirected ())
+ error ("%s at end of saved text", string);
+ else
+ error ("%s at end of input", string);
+ }
else if (token_buffer[0] == 0)
- strcat (buf, " at null character");
+ error ("%s at null character", string);
else if (token_buffer[0] == '"')
- strcat (buf, " before string constant");
+ error ("%s before string constant", string);
else if (token_buffer[0] == '\'')
- strcat (buf, " before character constant");
+ error ("%s before character constant", string);
else if (!ISGRAPH ((unsigned char)token_buffer[0]))
- sprintf (buf + strlen (buf), " before character 0%o",
- (unsigned char) token_buffer[0]);
+ error ("%s before character 0%o", string, (unsigned char) token_buffer[0]);
else
- strcat (buf, " before `%s'");
-
- error (buf, token_buffer);
+ error ("%s before `%s'", string, token_buffer);
}
\f
/* Value is 1 (or 2) if we should try to make the next identifier look like
struct saved_scope *s;
/* Clear out ID. */
- bzero (&id, sizeof (id));
+ memset (&id, 0, sizeof (id));
/* Don't allow recursion into FN. */
VARRAY_TREE_INIT (id.fns, 32, "fns");
static int template_args_equal PROTO((tree, tree));
static void print_template_context PROTO((int));
static void tsubst_default_arguments PROTO((tree));
+static tree for_each_template_parm_r PROTO((tree *, int *, void *));
/* Called once to initialize pt.c. */