if (cfi->dw_cfi_opc == DW_CFA_expression)
{
- fprintf (asm_out_file, "%#x,", cfi->dw_cfi_oprnd1.dw_cfi_reg_num);
+ fprintf (asm_out_file, "0x%x,", cfi->dw_cfi_oprnd1.dw_cfi_reg_num);
loc = cfi->dw_cfi_oprnd2.dw_cfi_loc;
}
else
if it is not possible. */
static dw_loc_descr_ref
-new_loc_descr_op_bit_piece (HOST_WIDE_INT bitsize, HOST_WIDE_INT offset)
+new_loc_descr_op_bit_piece (HOST_WIDE_INT bitsize)
{
- if ((bitsize % BITS_PER_UNIT) == 0 && offset == 0)
+ if ((bitsize % BITS_PER_UNIT) == 0)
return new_loc_descr (DW_OP_piece, bitsize / BITS_PER_UNIT, 0);
else if (dwarf_version >= 3 || !dwarf_strict)
- return new_loc_descr (DW_OP_bit_piece, bitsize, offset);
+ return new_loc_descr (DW_OP_bit_piece, bitsize, 0);
else
return NULL;
}
if (padsize > decl_size)
return NULL;
decl_size -= padsize;
- *descr_tail = new_loc_descr_op_bit_piece (padsize, 0);
+ *descr_tail = new_loc_descr_op_bit_piece (padsize);
if (*descr_tail == NULL)
return NULL;
descr_tail = &(*descr_tail)->dw_loc_next;
decl_size -= bitsize;
if (last == NULL)
{
- HOST_WIDE_INT offset = 0;
- if (GET_CODE (varloc) == VAR_LOCATION
- && GET_CODE (PAT_VAR_LOCATION_LOC (varloc)) != PARALLEL)
- {
- varloc = PAT_VAR_LOCATION_LOC (varloc);
- if (GET_CODE (varloc) == EXPR_LIST)
- varloc = XEXP (varloc, 0);
- }
- do
- {
- if (GET_CODE (varloc) == CONST
- || GET_CODE (varloc) == SIGN_EXTEND
- || GET_CODE (varloc) == ZERO_EXTEND)
- varloc = XEXP (varloc, 0);
- else if (GET_CODE (varloc) == SUBREG)
- varloc = SUBREG_REG (varloc);
- else
- break;
- }
- while (1);
- /* DW_OP_bit_size offset should be zero for register
- or implicit location descriptions and empty location
- descriptions, but for memory addresses needs big endian
- adjustment. */
- if (MEM_P (varloc))
- {
- unsigned HOST_WIDE_INT memsize
- = INTVAL (MEM_SIZE (varloc)) * BITS_PER_UNIT;
- if (memsize != bitsize)
- {
- if (BYTES_BIG_ENDIAN != WORDS_BIG_ENDIAN
- && (memsize > BITS_PER_WORD || bitsize > BITS_PER_WORD))
- return NULL;
- if (memsize < bitsize)
- return NULL;
- if (BITS_BIG_ENDIAN)
- offset = memsize - bitsize;
- }
- }
-
- *descr_tail = new_loc_descr_op_bit_piece (bitsize, offset);
+ *descr_tail = new_loc_descr_op_bit_piece (bitsize);
if (*descr_tail == NULL)
return NULL;
descr_tail = &(*descr_tail)->dw_loc_next;
the decl. */
if (descr != NULL && decl_size != 0)
{
- *descr_tail = new_loc_descr_op_bit_piece (decl_size, 0);
+ *descr_tail = new_loc_descr_op_bit_piece (decl_size);
if (*descr_tail == NULL)
return NULL;
}
struct var_loc_node *node;
node = loc_list->first;
- rtl = NOTE_VAR_LOCATION_LOC (node->loc);
+ rtl = NOTE_VAR_LOCATION_LOC (node->var_loc_note);
if (GET_CODE (rtl) == EXPR_LIST)
rtl = XEXP (rtl, 0);
if ((CONSTANT_P (rtl) || GET_CODE (rtl) == CONST_STRING)
return 1;
case DW_LANG_UPC:
case DW_LANG_D:
- case DW_LANG_Python:
return dwarf_version >= 4 ? 0 : -1;
case DW_LANG_Ada95:
case DW_LANG_Ada83: