http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47947
--- Comment #10 from Pat Haugen <pthaugen at gcc dot gnu.org> 2011-03-03 22:12:12 UTC --- This is looking like a dup of PR47862, note the following snippet of assembler. stfd 0,360(1) #, stfd 12,344(1) #, stfd 13,352(1) #, stfd 11,336(1) #, ... bl .printf # nop lfd 11,336(1) #, addi 9,1,384 #,, addi 3,31,176 #, tmp156, stxvd2x 11,0,9 # in0$hiVectorDouble, ... bl .printf # nop lfd 13,352(1) #, addi 9,1,384 #,, addi 3,31,208 #, tmp156, stxvd2x 13,0,9 # in0$loVectorDouble, 0,11,12,13 all hold vector values coming into this snippet, and you can see we're just saving/restoring part of the vector across the printf calls.