On 10/23/2017 11:18 AM, Richard Sandiford wrote: > This patch converts the frame allocation code (mostly in function.c) > to use poly_int64 rather than HOST_WIDE_INT for frame offsets and > sizes. > > > 2017-10-23 Richard Sandiford <richard.sandif...@linaro.org> > Alan Hayward <alan.hayw...@arm.com> > David Sherwood <david.sherw...@arm.com> > > gcc/ > * function.h (frame_space): Change start and length from HOST_WIDE_INT > to poly_int64. > (get_frame_size): Return the size as a poly_int64 rather than a > HOST_WIDE_INT. > (frame_offset_overflow): Take the offset as a poly_int64 rather > than a HOST_WIDE_INT. > (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type) > (assign_stack_temp): Likewise for the size. > * function.c (get_frame_size): Return a poly_int64 rather than > a HOST_WIDE_INT. > (frame_offset_overflow): Take the offset as a poly_int64 rather > than a HOST_WIDE_INT. > (try_fit_stack_local): Take the start, length and size as poly_int64s > rather than HOST_WIDE_INTs. Return the offset as a poly_int64_pod > rather than a HOST_WIDE_INT. > (add_frame_space): Take the start and end as poly_int64s rather than > HOST_WIDE_INTs. > (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type) > (assign_stack_temp): Likewise for the size. > (temp_slot): Change size, base_offset and full_size from HOST_WIDE_INT > to poly_int64. > (find_temp_slot_from_address): Handle polynomial offsets. > (combine_temp_slots): Likewise. > * emit-rtl.h (rtl_data::x_frame_offset): Change from HOST_WIDE_INT > to poly_int64. > * cfgexpand.c (alloc_stack_frame_space): Return the offset as a > poly_int64 rather than a HOST_WIDE_INT. > (expand_one_stack_var_at): Take the offset as a poly_int64 rather > than a HOST_WIDE_INT. > (expand_stack_vars, expand_one_stack_var_1, expand_used_vars): Handle > polynomial frame offsets. > * config/m32r/m32r-protos.h (m32r_compute_frame_size): Take the size > as a poly_int64 rather than an int. > * config/m32r/m32r.c (m32r_compute_frame_size): Likewise. > * config/v850/v850-protos.h (compute_frame_size): Likewise. > * config/v850/v850.c (compute_frame_size): Likewise. > * config/xtensa/xtensa-protos.h (compute_frame_size): Likewise. > * config/xtensa/xtensa.c (compute_frame_size): Likewise. > * config/pa/pa-protos.h (pa_compute_frame_size): Likewise. > * config/pa/pa.c (pa_compute_frame_size): Likewise. > * explow.h (get_dynamic_stack_base): Take the offset as a poly_int64 > rather than a HOST_WIDE_INT. > * explow.c (get_dynamic_stack_base): Likewise. > * final.c (final_start_function): Use the constant lower bound > of the frame size for -Wframe-larger-than. > * ira.c (do_reload): Adjust for new get_frame_size return type. > * lra.c (lra): Likewise. > * reload1.c (reload): Likewise. > * config/avr/avr.c (avr_asm_function_end_prologue): Likewise. > * config/pa/pa.h (EXIT_IGNORE_STACK): Likewise. > * rtlanal.c (get_initial_register_offset): Return the offset as > a poly_int64 rather than a HOST_WIDE_INT. >
OK Jeff