aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.h
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2001-10-18 21:34:14 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2001-10-18 17:34:14 -0400
commit0d4903b81e2e5f9371c330a82ddad63af0bb272a (patch)
tree8efd4ef27021837ed8a888f7f93fac0cede0d926 /gcc/function.h
parenteacecf96651d07155d20c784f4ab8862b57b3a50 (diff)
downloadgcc-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/function.h')
-rw-r--r--gcc/function.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/function.h b/gcc/function.h
index e339911..cc01d16 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -97,10 +97,10 @@ struct emit_status
int x_last_linenum;
const char *x_last_filename;
- /* The length of the regno_pointer_align and x_regno_reg_rtx vectors.
- Since these vectors are needed during the expansion phase when
- the total number of registers in the function is not yet known,
- the vectors are copied and made bigger when necessary. */
+ /* The length of the regno_pointer_align, regno_decl, and x_regno_reg_rtx
+ vectors. Since these vectors are needed during the expansion phase when
+ the total number of registers in the function is not yet known, the
+ vectors are copied and made bigger when necessary. */
int regno_pointer_align_length;
/* Indexed by pseudo register number, if nonzero gives the known alignment
@@ -108,6 +108,10 @@ struct emit_status
Allocated in parallel with x_regno_reg_rtx. */
unsigned char *regno_pointer_align;
+ /* Indexed by pseudo register number, if nonzero gives the decl
+ corresponding to that register. */
+ tree *regno_decl;
+
/* Indexed by pseudo register number, gives the rtx for that pseudo.
Allocated in parallel with regno_pointer_align. */
rtx *x_regno_reg_rtx;
@@ -120,6 +124,7 @@ struct emit_status
#define seq_stack (cfun->emit->sequence_stack)
#define REGNO_POINTER_ALIGN(REGNO) (cfun->emit->regno_pointer_align[REGNO])
+#define REGNO_DECL(REGNO) (cfun->emit->regno_decl[REGNO])
struct expr_status
{