Lines Matching defs:cfa

713 static dw_cfa_location cfa;
761 cfa = *loc_p;
898 assuming 0(cfa)) and what registers are in the window. */
1010 reg_save (NULL, DWARF_FRAME_RETURN_COLUMN, reg, offset - cfa.offset);
1106 if (!flag_asynchronous_unwind_tables && cfa.reg != STACK_POINTER_REGNUM)
1156 if (cfa.reg == STACK_POINTER_REGNUM)
1157 cfa.offset += offset;
1168 def_cfa_1 (label, &cfa);
1353 cfa, cfa_store, and cfa_temp.reg. We describe these rules so
1390 cfa current rule for calculating the CFA. It usually
1400 Rules 1- 4: Setting a register's value to cfa.reg or an expression
1401 with cfa.reg as the first operand changes the cfa.reg and its
1402 cfa.offset. Rule 1 and 4 also set cfa_temp.reg and
1405 Rules 6- 9: Set a non-cfa.reg register value to a constant or an
1419 "<reg>:cfa.reg" indicates that <reg> must equal cfa.reg.
1422 (set <reg1> <reg2>:cfa.reg)
1423 effects: cfa.reg = <reg1>
1424 cfa.offset unchanged
1426 cfa_temp.offset = cfa.offset
1429 (set sp ({minus,plus,losum} {sp,fp}:cfa.reg
1431 effects: cfa.reg = sp if fp used
1432 cfa.offset += {+/- <const_int>, cfa_temp.offset} if cfa.reg==sp
1437 (set fp ({minus,plus,losum} <reg>:cfa.reg <const_int>))
1438 effects: cfa.reg = fp
1442 (set <reg1> ({plus,losum} <reg2>:cfa.reg <const_int>))
1445 effects: cfa.reg = <reg1>
1447 cfa_temp.offset = cfa.offset
1450 (set <reg1> (plus <reg2>:cfa_temp.reg sp:cfa.reg))
1454 cfa_store.offset = cfa.offset - cfa_temp.offset
1478 cfa.offset = cfa_store.offset if cfa.reg == sp
1479 cfa.reg = sp
1480 cfa.base_offset = -cfa_store.offset
1485 cfa.offset = cfa_store.offset if cfa.reg == sp
1486 cfa.reg = sp
1487 cfa.base_offset = -cfa_store.offset
1493 effects: cfa.reg = <reg1>
1494 cfa.base_offset = -/+ <const_int> - {cfa_store,cfa_temp}.offset
1498 effects: cfa.reg = <reg1>
1499 cfa.base_offset = -{cfa_store,cfa_temp}.offset
1503 effects: cfa.reg = <reg1>
1504 cfa.base_offset = -cfa_temp.offset
1555 if (cfa.reg == (unsigned) REGNO (src))
1565 cfa.reg = REGNO (dest);
1566 cfa_temp.reg = cfa.reg;
1567 cfa_temp.offset = cfa.offset;
1604 gcc_assert (cfa.reg == (unsigned) HARD_FRAME_POINTER_REGNUM);
1605 cfa.reg = STACK_POINTER_REGNUM;
1615 if (cfa.reg == STACK_POINTER_REGNUM)
1616 cfa.offset += offset;
1628 && (unsigned) REGNO (XEXP (src, 0)) == cfa.reg
1633 cfa.offset += offset;
1634 cfa.reg = HARD_FRAME_POINTER_REGNUM;
1642 && REGNO (XEXP (src, 0)) == cfa.reg
1648 cfa.offset += offset;
1649 cfa.reg = REGNO (dest);
1651 cfa_temp.reg = cfa.reg;
1652 cfa_temp.offset = cfa.offset;
1662 gcc_assert (cfa.reg == STACK_POINTER_REGNUM);
1664 cfa_store.offset = cfa.offset - cfa_temp.offset;
1713 def_cfa_1 (label, &cfa);
1735 if (cfa.reg == STACK_POINTER_REGNUM)
1736 cfa.offset = cfa_store.offset;
1752 if (cfa.reg == STACK_POINTER_REGNUM)
1753 cfa.offset = cfa_store.offset;
1814 && (unsigned) REGNO (src) == cfa.reg)
1818 if (cfa.offset == 0)
1823 def_cfa_1 (label, &cfa);
1837 cfa.reg = REGNO (x);
1838 cfa.base_offset = offset;
1839 cfa.indirect = 1;
1840 def_cfa_1 (label, &cfa);
1845 def_cfa_1 (label, &cfa);
1875 lookup_cfa (&cfa);
1876 gcc_assert (cfa.reg
1879 cfa.reg = STACK_POINTER_REGNUM;
1880 cfa_store = cfa;
3458 build_cfa_loc (dw_cfa_location *cfa, HOST_WIDE_INT offset)
3462 offset += cfa->offset;
3464 if (cfa->indirect)
3466 if (cfa->base_offset)
3468 if (cfa->reg <= 31)
3469 head = new_loc_descr (DW_OP_breg0 + cfa->reg, cfa->base_offset, 0);
3471 head = new_loc_descr (DW_OP_bregx, cfa->reg, cfa->base_offset);
3473 else if (cfa->reg <= 31)
3474 head = new_loc_descr (DW_OP_reg0 + cfa->reg, 0, 0);
3476 head = new_loc_descr (DW_OP_regx, cfa->reg, 0);
3490 if (cfa->reg <= 31)
3491 head = new_loc_descr (DW_OP_reg0 + cfa->reg, 0, 0);
3493 head = new_loc_descr (DW_OP_regx, cfa->reg, 0);
3494 else if (cfa->reg <= 31)
3495 head = new_loc_descr (DW_OP_breg0 + cfa->reg, offset, 0);
3497 head = new_loc_descr (DW_OP_bregx, cfa->reg, offset);
3507 get_cfa_from_loc_descr (dw_cfa_location *cfa, struct dw_loc_descr_struct *loc)
3510 cfa->offset = 0;
3511 cfa->base_offset = 0;
3512 cfa->indirect = 0;
3513 cfa->reg = -1;
3553 cfa->reg = op - DW_OP_reg0;
3556 cfa->reg = ptr->dw_loc_oprnd1.v.val_int;
3590 cfa->reg = op - DW_OP_breg0;
3591 cfa->base_offset = ptr->dw_loc_oprnd1.v.val_int;
3594 cfa->reg = ptr->dw_loc_oprnd1.v.val_int;
3595 cfa->base_offset = ptr->dw_loc_oprnd2.v.val_int;
3598 cfa->indirect = 1;
3601 cfa->offset = ptr->dw_loc_oprnd1.v.val_unsigned;