http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50904
--- Comment #39 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-12-05 09:21:15 UTC --- > Thus, I think if at the RTL level we see a missed invariant motion then > this is a RTL level bug (esp. if it only triggers with -fno-protect-parens). Well, how can the RTL level invent load hoisting opportunities? They are of course already present at the Tree level, see the .optimized dump: vect_var_.124_350 = MEM[(real(kind=8)[9] *)&x2gauss]; vect_var_.133_823 = MEM[(real(kind=8)[9] *)&y2gauss]; vect_var_.157_586 = MEM[(real(kind=8)[9] *)&w2gauss]; vect_var_.124_357 = MEM[(real(kind=8)[9] *)&x2gauss + 16B]; vect_var_.133_363 = MEM[(real(kind=8)[9] *)&y2gauss + 16B]; vect_var_.157_874 = MEM[(real(kind=8)[9] *)&w2gauss + 16B]; vect_var_.124_405 = MEM[(real(kind=8)[9] *)&x2gauss + 32B]; vect_var_.133_594 = MEM[(real(kind=8)[9] *)&y2gauss + 32B]; vect_var_.157_610 = MEM[(real(kind=8)[9] *)&w2gauss + 32B]; vect_var_.124_651 = MEM[(real(kind=8)[9] *)&x2gauss + 48B]; vect_var_.133_680 = MEM[(real(kind=8)[9] *)&y2gauss + 48B]; vect_var_.157_805 = MEM[(real(kind=8)[9] *)&w2gauss + 48B];