http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47324
--- Comment #20 from Jack Howarth <howarth at nitro dot med.uc.edu> 2011-02-09 05:10:26 UTC --- Tested... Index: gcc/dwarf2out.c =================================================================== --- gcc/dwarf2out.c (revision 169960) +++ gcc/dwarf2out.c (working copy) @@ -5454,11 +5454,12 @@ static void output_cfa_loc (dw_cfi_ref cfi) { dw_loc_descr_ref loc; - unsigned long size; + unsigned long r, size; if (cfi->dw_cfi_opc == DW_CFA_expression) { - dw2_asm_output_data (1, cfi->dw_cfi_oprnd1.dw_cfi_reg_num, NULL); + r = DWARF2_FRAME_REG_OUT (cfi->dw_cfi_oprnd1.dw_cfi_reg_num, 1); + dw2_asm_output_data (1, (cfi->dw_cfi_opc | (r & 0x3f)), NULL); loc = cfi->dw_cfi_oprnd2.dw_cfi_loc; } else which bootstraps but the g++.dg/torture/stackalign/eh-alloca-1.C -O0 execution test just hangs. I passed 1 to DWARF2_FRAME_REG_OUT because for_eh wasn't available which I guess isn't correct.