diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2001-10-18 21:34:14 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2001-10-18 17:34:14 -0400 |
commit | 0d4903b81e2e5f9371c330a82ddad63af0bb272a (patch) | |
tree | 8efd4ef27021837ed8a888f7f93fac0cede0d926 /gcc/expr.h | |
parent | eacecf96651d07155d20c784f4ab8862b57b3a50 (diff) | |
download | gcc-0d4903b81e2e5f9371c330a82ddad63af0bb272a.zip gcc-0d4903b81e2e5f9371c330a82ddad63af0bb272a.tar.gz gcc-0d4903b81e2e5f9371c330a82ddad63af0bb272a.tar.bz2 |
emit-rtl.c (gen_reg_rtx): Also reallocate reg_decl array.
* emit-rtl.c (gen_reg_rtx): Also reallocate reg_decl array.
(offset_address): New function.
(free_emit_status): Free regno_decl.
(init_emit): Pass proper number of elements to xcalloc.
Allocate regno_decl.
(mark_emit_status): Mark regno_decl values.
* expr.c (highest_pow2_factor): New function.
(expand_assigment): Use it and offset_address.
Properly handle ptr_mode vs. Pmode in offset calculation.
(store_constructor, expand_expr_unaligned): Likewise.
(expand_expr, case COMPONENT_EXPR): Likewise.
* expr.h (offset_address): New decl.
* function.h (struct emit_status): Add regno_decl.
(REGNO_DECL): New macro.
* final.c (output_asm_name): Move in file and don't conditionalize
on flag_print_asm_name.
(output_asm_insn): Only call output_asm_name if flag_print_asm_name.
Output names of operands, if known.
* function.c (assign_parms): Set REGNO_DECL.
* integrate.c (integrate_decl_tree): Likewise.
* stmt.c (expand_decl): Likewise.
* regclass.c (reg_scan_mark_refs): Propagate REGNO_DECL for copies.
From-SVN: r46337
Diffstat (limited to 'gcc/expr.h')
-rw-r--r-- | gcc/expr.h | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -633,6 +633,11 @@ extern rtx change_address PARAMS ((rtx, enum machine_mode, rtx)); extern rtx adjust_address_1 PARAMS ((rtx, enum machine_mode, HOST_WIDE_INT, int)); +/* Return a memory reference like MEMREF, but whose address is changed by + adding OFFSET, an RTX, to it. POW2 is the highest power of two factor + known to be in OFFSET (possibly 1). */ +extern rtx offset_address PARAMS ((rtx, rtx, HOST_WIDE_INT)); + /* Return a memory reference like MEMREF, but with its address changed to ADDR. The caller is asserting that the actual piece of memory pointed to is the same, just the form of the address is being changed, such as |