------- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-03 18:02
-------
Are you sure that 4.0.0 does not work, as it no longer does the transformation for
&(a->b) into a +
offsetof(a,b).
>From the last tree dump for 4.0.0:
;; Function Assign_Hour_Of (Assign_Hour_Of)
Assign_Hour_Of (t)
{
<bb 0>:
t->Hour = 44;
return;
}
;; Function Clobber_Hour_Of (Clobber_Hour_Of)
Clobber_Hour_Of (dt)
{
struct Time_T * D.1128;
<bb 0>:
D.1128 = &dt->Time;
Assign_Hour_Of (D.1128);
return;
}
;; Function main (main)
main ()
{
struct Date_And_Time_T dt;
int D.1135;
<bb 0>:
dt.Time.Hour = 22;
Clobber_Hour_Of (&dt);
D.1135 = 0;
return D.1135;
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18287