/* Ignore SP reg, as it can be recovered from the CFA tracking info. */
if (cfi_insn->u.ri.reg == SFRAME_CFA_FP_REG)
{
- gas_assert (cur_fre->fp_reg == SFRAME_FRE_REG_INVALID);
sframe_fre_set_fp_track (cur_fre, cfi_insn->u.ri.offset);
+ cur_fre->fp_reg = SFRAME_FRE_REG_INVALID;
cur_fre->merge_candidate = false;
}
else if (sframe_ra_tracking_p ()
if (sframe_ra_tracking_p () && cfi_insn->u.r == SFRAME_CFA_RA_REG)
{
- cur_fre->ra_loc = SFRAME_FRE_ELEM_LOC_REG;
+ cur_fre->ra_loc = SFRAME_FRE_ELEM_LOC_NONE;
cur_fre->ra_offset = 0;
cur_fre->ra_undefined_p = false;
cur_fre->merge_candidate = false;
}
else if (cfi_insn->u.r == SFRAME_CFA_FP_REG)
{
- cur_fre->fp_loc = SFRAME_FRE_ELEM_LOC_REG;
+ cur_fre->fp_loc = SFRAME_FRE_ELEM_LOC_NONE;
cur_fre->fp_offset = 0;
cur_fre->merge_candidate = false;
}
as_bad (format, __VA_ARGS__); \
} while (0)
-#define SFRAME_FRE_ELEM_LOC_REG 0
-#define SFRAME_FRE_ELEM_LOC_STACK 1
+/* The entity is not tracked. */
+#define SFRAME_FRE_ELEM_LOC_NONE 0
+/* The location of the tracked entity is based on a register. May or may not
+ involve dereferencing. */
+#define SFRAME_FRE_ELEM_LOC_REG 1
+/* The location of the tracked entity is based on the CFA. In theory, may or
+ may not involve dereferencing. */
+#define SFRAME_FRE_ELEM_LOC_STACK 2
/* An invalid register number. */
#define SFRAME_FRE_REG_INVALID ((unsigned int)-1)