[patch,avr][ping #1] PR81075: Move jump-tables out of .text

Georg-Johann Lay avr@gjlay.de
Thu Jun 22 20:27:00 GMT 2017


Ping #1

http://gcc.gnu.org/ml/gcc-patches/2017-06/msg01029.html

Georg-Johann Lay schrieb:
> Hi,
> 
> Since PR71151 we have jump-tables in .text so that branches
> crossing the tables have longer offsets that needed.
> 
> This moves jump-tables out of test again, but not into
> .progmem.gcc_sw_tables like before PR71151, but into
> the currently unused but existing .jumptables.
> 
> Since PR63223 there is no restriction on the location
> of jump-tables, they can even reside above 128KiB without
> problems.
> 
> Also adds -mlog=insn_addresses to dump insn addresses
> as asm comments before respective instruction.
> 
> The patch implements ASM_OUTPUT_ADDR_VEC so that avr.c
> gains full control over the table generation.
> 
> Tested on ATmega2560.
> 
> Ok to apply?
> 
> Johann
> 
> 
> gcc/
>     Move jump-tables out of .text again.
> 
>     PR target/81075
>     * config/avr/avr.c (ASM_OUTPUT_ADDR_VEC_ELT): Remove function.
>     (ASM_OUTPUT_ADDR_VEC): New function.
>     (avr_adjust_insn_length) [JUMP_TABLE_DATA_P]: Return 0.
>     (avr_final_prescan_insn) [avr_log.insn_addresses]: Dump
>     INSN_ADDRESSes as asm comment.
>     * config/avr/avr.h (JUMP_TABLES_IN_TEXT_SECTION): Adjust comment.
>     (ASM_OUTPUT_ADDR_VEC_ELT): Remove define.
>     (ASM_OUTPUT_ADDR_VEC): Define to avr_output_addr_vec.
>     * config/avr/avr.md (*tablejump): Adjust comment.
>     * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove.
>     * config/avr/avr-log.c (avr_log_set_avr_log) <insn_addresses>:
>     New detail.
>     * config/avr/avr-protos.h (avr_output_addr_vec_elt): Remove proto.
>     (avr_output_addr_vec): New proto.
>     (avr_log_t) <insn_addresses>: New field.
> 



More information about the Gcc-patches mailing list