Re: [Bug tree-optimization/24694] New: Address taken and addressable variables and call clobber

2005-11-06 Thread Daniel Berlin
On Sun, 2005-11-06 at 15:46 +, 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.





[Bug tree-optimization/24694] New: Address taken and addressable variables and call clobber

2005-11-06 Thread pinskia at gcc dot gnu dot org
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).


-- 
   Summary: Address taken and addressable variables and call clobber
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: enhancement
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24694