http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47324

--- Comment #19 from Jack Howarth <howarth at nitro dot med.uc.edu> 2011-02-09 
02:50:21 UTC ---
Could this be the problem code?

static void
output_cfa_loc (dw_cfi_ref cfi)
{
  dw_loc_descr_ref loc;
  unsigned long size;

  if (cfi->dw_cfi_opc == DW_CFA_expression)
    {
      dw2_asm_output_data (1, cfi->dw_cfi_oprnd1.dw_cfi_reg_num, NULL); <======
      loc = cfi->dw_cfi_oprnd2.dw_cfi_loc;
    }
  else
    loc = cfi->dw_cfi_oprnd1.dw_cfi_loc;

  /* Output the size of the block.  */
  size = size_of_locs (loc);
  dw2_asm_output_data_uleb128 (size, NULL);

  /* Now output the operations themselves.  */
  output_loc_sequence (loc);
}

dw_cfi_oprnd1.dw_cfi_reg_num is being passed to dw2_asm_output_data() directly
with out being processed through DWARF2_FRAME_REG_OUT first.

Reply via email to