This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/24694] Address taken and addressable variables and call clobber
- From: "dberlin at dberlin dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 6 Nov 2005 23:59:06 -0000
- Subject: [Bug tree-optimization/24694] Address taken and addressable variables and call clobber
- References: <bug-24694-6528@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #3 from dberlin at gcc dot gnu dot org 2005-11-06 23:59 -------
Subject: Re: New: Address taken and
addressable variables and call clobber
On Sun, 2005-11-06 at 15:46 +0000, pinskia at gcc dot gnu dot org wrote:
> Take the following code:
> int f(int);
> int g(void)
> {
> int i;
> int *iptr = &i;
> int **ipp = &iptr;
> **ipp = 1;
> f(i);
> return **ipp;
> }
> ----------
> Here we consider i being call clobber because we lose the fact that iptr is
> addressable
> but we don't look to see if its address escapes at all (which in
> this case it does not).
No, we don't actually.
In fact, that's not even close to what happens.
iptr isn't renamed, and thus, we assume the address taking of i and storage
into iptr is the same as a global store,
because we know nothing about unrenamed variables.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24694