http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47324
--- Comment #31 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-02-10 08:43:02 UTC --- You really don't need to add for_eh argument to output_cfa_loc_raw, you can assume it is 1. If you need to still adjust the register numbers inside of expressions, I guess for the current targets using DWARF2_FRAME_REG_OUT (rs6000 and darwin/i386) this is solvable by passing for_eh parameter down to output_loc_sequence and output_loc_operands, in output_loc_sequence adjust for output dw_loc_opc for DW_OP_{,b}reg0 .. 31 using DWARF2_FRAME_REG_OUT (and perhaps assert that it is still <= 31; don't modify loc->dw_loc_opc though) and in output_loc_operands adjust DW_OP_{,b}regx argument and assert that size_of_uleb128 of the first argument is the same as of the adjusted argument using DWARF2_FRAME_REG_OUT. Additionally, in output_loc*raw* variants don't pass for_eh down, just use DWARF2_FRAME_REG_OUT with unconditional 1 second argument.