http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46232
--- Comment #7 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2010-12-15 17:07:44 UTC --- > Nevertheless, this has been the case in 4.5 as well, how come the > testcase does not fail there? The generated code is identical on mainline and 4.5 branch so there is no actual regression. It's simply the confusing notation t$e$1_10 = MEM[(struct YY *)&D.1994 + 8B] on the mainline instead of t$e$1_10 = D.1994.e[1]; on the 4.5 branch that lets you think there is still an indirection. It is introduced during ESRA: D.1995 = r_2(D)->v; D.1994 = D.1995; t = D.1994; D.1980_4 = t.e[1]; becomes D.1995 = r_2(D)->v; D.1994 = D.1995; t = D.1994; t$e$1_10 = MEM[(struct YY *)&D.1994 + 8B]; D.1980_4 = t$e$1_10; instead of D.1995 = r_2(D)->v; D.1994 = D.1995; t = D.1994; t$e$1_10 = D.1994.e[1]; D.1980_4 = t$e$1_10; on the 4.5 branch. This looks totally useless.