S/390: Add -fsplit-stack support
commitc6d481f72b62d28bdfc50bcf3b50099bdd72f918
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Feb 2016 10:20:18 +0000 (15 10:20 +0000)
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Feb 2016 10:20:18 +0000 (15 10:20 +0000)
tree633620a331dce10653b1b110b0531b75f5ee2376
parent4a45fe0fc443008fa175bfbd19a31faa443aa97e
S/390: Add -fsplit-stack support

libgcc/ChangeLog:

* config.host: Use t-stack and t-stack-s390 for s390*-*-linux.
* config/s390/morestack.S: New file.
* config/s390/t-stack-s390: New file.
* generic-morestack.c (__splitstack_find): Add s390-specific code.

gcc/ChangeLog:

* common/config/s390/s390-common.c (s390_supports_split_stack):
New function.
(TARGET_SUPPORTS_SPLIT_STACK): New macro.
* config/s390/s390-protos.h: Add s390_expand_split_stack_prologue.
* config/s390/s390.c (struct machine_function): New field
split_stack_varargs_pointer.
(s390_register_info): Mark r12 as clobbered if it'll be used as temp
in s390_emit_prologue.
(s390_emit_prologue): Use r12 as temp if r1 is taken by split-stack
vararg pointer.
(morestack_ref): New global.
(SPLIT_STACK_AVAILABLE): New macro.
(s390_expand_split_stack_prologue): New function.
(s390_live_on_entry): New function.
(s390_va_start): Use split-stack vararg pointer if appropriate.
(s390_asm_file_end): Emit the split-stack note sections.
(TARGET_EXTRA_LIVE_ON_ENTRY): New macro.
* config/s390/s390.md (UNSPEC_STACK_CHECK): New unspec.
(UNSPECV_SPLIT_STACK_CALL): New unspec.
(UNSPECV_SPLIT_STACK_DATA): New unspec.
(split_stack_prologue): New expand.
(split_stack_space_check): New expand.
(split_stack_data): New insn.
(split_stack_call): New expand.
(split_stack_call_*): New insn.
(split_stack_cond_call): New expand.
(split_stack_cond_call_*): New insn.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233421 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/common/config/s390/s390-common.c
gcc/config/s390/s390-protos.h
gcc/config/s390/s390.c
gcc/config/s390/s390.md
libgcc/ChangeLog
libgcc/config.host
libgcc/config/s390/morestack.S [new file with mode: 0644]
libgcc/config/s390/t-stack-s390 [new file with mode: 0644]
libgcc/generic-morestack.c