http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50283
--- Comment #5 from John David Anglin <danglin at gcc dot gnu.org> 2011-11-21 17:04:20 UTC --- Regarding label placement of frame related insns, we have the following rtl for f2: (insn 14 2 15 (sequence [ (call_insn 5 2 11 (parallel [ (call (mem:SI (symbol_ref/v:SI ("@_Z2f3v") [flags 0x203] <function_decl 7afc7b80 f3>) [0 f3 S4 A32]) (const_int 16 [0x10])) (clobber (reg:SI 1 %r1)) (clobber (reg:SI 2 %r2)) (use (const_int 0 [0])) ]) /test/gnu/gcc/gcc/gcc/testsuite/g++.dg/eh/simd-1.C:30 199 {call_symref} (expr_list:REG_NORETURN (const_int 0 [0]) (nil)) (nil)) (insn/f 11 5 15 (set (reg/f:SI 30 %r30) (plus:SI (reg/f:SI 30 %r30) (const_int 64 [0x40]))) 111 {addsi3} (nil)) ]) /test/gnu/gcc/gcc/gcc/testsuite/g++.dg/eh/simd-1.C:30 -1 (nil)) The assembler for f2 is: .SPACE $TEXT$ .NSUBSPA $CODE$ .align 4 .EXPORT _Z2f2v,ENTRY,PRIV_LEV=3 L$FB0002: _Z2f2v: .PROC .CALLINFO FRAME=64,CALLS,SAVE_RP .ENTRY stw %r2,-20(%r30) L$CFI0001: .CALL bl _Z2f3v,%r2 ldo 64(%r30),%r30 L$CFI0002: nop .EXIT .PROCEND L$FE0002: L$CFI0002 is now after the call sequence whereas it used to be before the sequence.