aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-stdarg.c
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2015-08-12 17:36:45 +0000
committerMax Filippov <jcmvbkbc@gcc.gnu.org>2015-08-12 17:36:45 +0000
commita024f5143d592db41c5316c24d3e10fd86c839ec (patch)
tree07a3b7e9657deeab0b91ba1446c600d5ffbcfcf5 /gcc/tree-stdarg.c
parent4757fa7f0ba01e207b313c2931312555d5ec98bf (diff)
downloadgcc-a024f5143d592db41c5316c24d3e10fd86c839ec.zip
gcc-a024f5143d592db41c5316c24d3e10fd86c839ec.tar.gz
gcc-a024f5143d592db41c5316c24d3e10fd86c839ec.tar.bz2
xtensa: add -mauto-litpools option
With support from assembler this option allows compiling huge functions, where single literal pool at the beginning of a function may not be reachable by L32R instructions at its end. Currently assembler --auto-litpools option cannot deal with literals used from multiple locations separated by more than 256 KBytes of code. Don't turn constants into literals, instead use MOVI instruction to load them into registers and let the assembler turn them into literals as necessary. 2015-08-12 Max Filippov <jcmvbkbc@gmail.com> gcc/ * config/xtensa/constraints.md (define_constraint "Y"): New constraint. * config/xtensa/elf.h (ASM_SPEC): Add m(no-)auto-litpools. * config/xtensa/linux.h (ASM_SPEC): Likewise. * config/xtensa/predicates.md (move_operand): Match constants and symbols in the presence of TARGET_AUTO_LITPOOLS. * config/xtensa/xtensa.c (xtensa_valid_move): Don't allow immediate references to TLS data. (xtensa_emit_move_sequence): Don't force constants to memory in the presence of TARGET_AUTO_LITPOOLS. (print_operand): Add 'y' format, same as default, but capable of printing SF mode constants as well. * config/xtensa/xtensa.md (movsi_internal, movhi_internal) (movsf_internal): Add movi pattern that loads literal. (movsf, movdf): Don't force constants to memory in the presence of TARGET_AUTO_LITPOOLS. (movdf_internal): Add 'Y' constraint. * config/xtensa/xtensa.opt (mauto-litpools): New option. * doc/invoke.text (Xtensa options): Document -mauto-litpools. From-SVN: r226828
Diffstat (limited to 'gcc/tree-stdarg.c')
0 files changed, 0 insertions, 0 deletions