From: Jim Wilson <wilson@specifixinc.com>
To: linux-ia64@vger.kernel.org
Subject: Re: PATCH: Re: Inefficient ia64 system call implementation in glibc
Date: Wed, 24 Sep 2003 21:12:38 +0000 [thread overview]
Message-ID: <marc-linux-ia64-106443858814288@msgid-missing> (raw)
In-Reply-To: <marc-linux-ia64-106438485815490@msgid-missing>
On Wed, 2003-09-24 at 11:56, H. J. Lu wrote:
> I don't think it will be the problem. Compiler will do
> addl outN = constant, r0
> to pass a constant to the function, regardless what the type is. Am I
> correct?
No.
The compiler will emit RTL like this
(set (reg:SI outN) (const_int constant))
which will translate to a
addl outN = constant, r0
instruction.
However, if you are optimizing, then all we are guaranteed is that a
value equivalent to an SImode constant will end up in the register. If
you have something like
if (i = 0)
sub (0);
and i has type int, and i happens to be already in the right register
for the first argument to sub, then the compiler will optimize away the
load of zero as redundant. The if statement uses cmp4 which only looks
at the low order 4 bytes of i, and hence any value could be in the upper
4 bytes. This is OK per the ABI, which says that only the low 4 bytes
of an integer argument are valid.
I have seen reports of this happening for unnamed arguments to stdarg
functions. There was even one report of this from David Mosberger a
long time ago. If you are passing a constant zero to a function that
requires long, and you don't have a prototype that forces the conversion
to long, then you must specify 0L to get correct results.
I'm not subscribed to the glibc list, so I think my message will bounce
from there.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
next prev parent reply other threads:[~2003-09-24 21:12 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-09-24 6:27 PATCH: Re: Inefficient ia64 system call implementation in glibc H. J. Lu
2003-09-24 7:43 ` Jakub Jelinek
2003-09-24 8:36 ` Andreas Schwab
2003-09-24 18:56 ` H. J. Lu
2003-09-24 20:36 ` Andreas Schwab
2003-09-24 21:12 ` Jim Wilson [this message]
2003-09-25 4:34 ` H. J. Lu
2003-09-25 4:36 ` H. J. Lu
2003-09-25 4:39 ` H. J. Lu
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=marc-linux-ia64-106443858814288@msgid-missing \
--to=wilson@specifixinc.com \
--cc=linux-ia64@vger.kernel.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