diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-18 21:34:14 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-18 21:34:14 +0000 |
commit | fcdc122ea79b823c0ba3f9a2079e3260cce3fda7 (patch) | |
tree | 8efd4ef27021837ed8a888f7f93fac0cede0d926 /gcc/function.h | |
parent | b28b3cd223f327f5367a7009317a61de29eb7c22 (diff) | |
download | gcc-fcdc122ea79b823c0ba3f9a2079e3260cce3fda7.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46337 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.h')
-rw-r--r-- | gcc/function.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/function.h b/gcc/function.h index e339911062b..cc01d164975 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 { |