From: Josh Triplett <josh@joshtriplett.org>
To: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Cc: Christopher Li <sparse@chrisli.org>,
Sparse Mailing-list <linux-sparse@vger.kernel.org>
Subject: Re: [PATCH 3/5] Fix some "unknown format" warnings
Date: Tue, 21 May 2013 15:05:46 -0700 [thread overview]
Message-ID: <20130521220546.GD11463@jtriplet-mobl1> (raw)
In-Reply-To: <519BC851.5090202@ramsay1.demon.co.uk>
On Tue, May 21, 2013 at 08:17:37PM +0100, Ramsay Jones wrote:
>
> Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
> ---
%Ld for a long long int is actually broken on all architectures; L only
works for long double. Thanks for fixing that.
Formatting nit: I think this reads better when written as:
"... blah blah " PRIx64 " blah blah ..."
, leaving spaces between the macro and the close/open doublequotes.
Further comments below.
> @@ -336,10 +337,14 @@ const char *show_instruction(struct instruction *insn)
>
> switch (expr->type) {
> case EXPR_VALUE:
> - buf += sprintf(buf, "%lld", expr->value);
> + buf += sprintf(buf, "%"PRId64, expr->value);
> break;
> case EXPR_FVALUE:
> +#if !defined(__MINGW32__)
> buf += sprintf(buf, "%Lf", expr->fvalue);
> +#else
> + buf += sprintf(buf, "%f", (double)expr->fvalue);
> +#endif
This seems really sad; does MinGW really have long double but no way to
print it? Can we at least emit something here to indicate possible
truncation or loss of precision, if no means exists to print a long
double?
> @@ -463,7 +468,7 @@ const char *show_instruction(struct instruction *insn)
> }
>
> if (buf >= buffer + sizeof(buffer))
> - die("instruction buffer overflowed %td\n", buf - buffer);
> + die("instruction buffer overflowed %d\n", (int)(buf - buffer));
No, ptrdiff_t does not portably fit in int; it generally has the same
size as size_t (64-bit on 64-bit platforms). Cast to "long long" and
use PRId64 if you must.
> --- a/pre-process.c
> +++ b/pre-process.c
> @@ -158,12 +158,17 @@ static int expand_one_symbol(struct token **list)
> } else if (token->ident == &__DATE___ident) {
> if (!t)
> time(&t);
> +#if !defined(__MINGW32__)
> strftime(buffer, 12, "%b %e %Y", localtime(&t));
> +#else
> + strftime(buffer, 12, "%b %d %Y", localtime(&t));
> + if (buffer[4] == '0') buffer[4] = ' ';
> +#endif
To the best of my knowledge, nothing guarantees the length of %b, so the
[4] here seems wrong.
> @@ -980,7 +981,11 @@ static int show_fvalue(struct expression *expr)
> int new = new_pseudo();
> long double value = expr->fvalue;
>
> +#if !defined(__MINGW32__)
> printf("\tmovf.%d\t\tv%d,$%Lf\n", expr->ctype->bit_size, new, value);
> +#else
> + printf("\tmovf.%d\t\tv%d,$%f\n", expr->ctype->bit_size, new, (double)value);
> +#endif
Same comment as above regarding long double.
> --- a/tokenize.c
> +++ b/tokenize.c
> @@ -547,8 +547,8 @@ static int get_one_number(int c, int next, stream_t *stream)
> }
>
> if (p == buffer_end) {
> - sparse_error(stream_pos(stream), "number token exceeds %td characters",
> - buffer_end - buffer);
> + sparse_error(stream_pos(stream), "number token exceeds %d characters",
> + (int)(buffer_end - buffer));
Same comment as above regarding ptrdiff_t.
- Josh Triplett
next prev parent reply other threads:[~2013-05-21 22:15 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-21 19:17 [PATCH 3/5] Fix some "unknown format" warnings Ramsay Jones
2013-05-21 22:05 ` Josh Triplett [this message]
2013-05-22 22:01 ` Ramsay Jones
2013-05-22 22:54 ` Josh Triplett
2013-05-25 19:26 ` Ramsay Jones
2013-05-25 20:30 ` Josh Triplett
2013-05-23 15:42 ` Christopher Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130521220546.GD11463@jtriplet-mobl1 \
--to=josh@joshtriplett.org \
--cc=linux-sparse@vger.kernel.org \
--cc=ramsay@ramsay1.demon.co.uk \
--cc=sparse@chrisli.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).