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.

Reply via email to