c-common.c (check_format_info): Put back check for C9x `hh' length modifier.

* c-common.c (check_format_info): Put back check for C9x `hh'
	length modifier.  Warn about %n format writing into const.  Remove
	obsolete comment.
	(format_char_info): Fix comments.

From-SVN: r20207
This commit is contained in:
Andreas Schwab 1998-06-03 02:13:21 +00:00 committed by Andreas Schwab
parent 7fdc2757cb
commit bc516719ec
2 changed files with 18 additions and 13 deletions

View File

@ -1,5 +1,10 @@
Wed Jun 3 11:02:24 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* c-common.c (check_format_info): Put back check for C9x `hh'
length modifier. Warn about %n format writing into const. Remove
obsolete comment.
(format_char_info): Fix comments.
* configure.in: Set float_format to m68k for all m68k targets that
do not override LONG_DOUBLE_TYPE_SIZE.
* config/float-m68k.h: New file.

View File

@ -979,10 +979,10 @@ typedef struct {
int pointer_count;
/* Type of argument if no length modifier is used. */
tree *nolen;
/* Type of argument if length modifier for shortening is used.
/* Type of argument if length modifier for shortening to byte is used.
If NULL, then this modifier is not allowed. */
tree *hhlen;
/* Type of argument if length modifier for shortening to byte if used.
/* Type of argument if length modifier for shortening is used.
If NULL, then this modifier is not allowed. */
tree *hlen;
/* Type of argument if length modifier `l' is used.
@ -1556,6 +1556,13 @@ check_format_info (info, params)
if (pedantic)
warning ("ANSI C does not support the `ll' length modifier");
}
else if (length_char == 'h' && *format_chars == 'h')
{
length_char = 'H', format_chars++;
/* FIXME: Is allowed in ISO C 9x. */
if (pedantic)
warning ("ANSI C does not support the `hh' length modifier");
}
if (*format_chars == 'a' && info->format_type == scanf_format_type)
{
if (format_chars[1] == 's' || format_chars[1] == 'S'
@ -1688,15 +1695,6 @@ check_format_info (info, params)
warning ("use of `%c' length character with `%c' type character",
length_char, format_char);
/*
** XXX -- should kvetch about stuff such as
** {
** const int i;
**
** scanf ("%d", &i);
** }
*/
/* Finally. . .check type of argument against desired type! */
if (info->first_arg_num == 0)
continue;
@ -1739,8 +1737,10 @@ check_format_info (info, params)
}
/* See if this is an attempt to write into a const type with
scanf. */
if (info->format_type == scanf_format_type
scanf or with printf "%n". */
if ((info->format_type == scanf_format_type
|| (info->format_type == printf_format_type
&& format_char == 'n'))
&& i == fci->pointer_count + aflag
&& wanted_type != 0
&& TREE_CODE (cur_type) != ERROR_MARK