For the call to __morestack we use a special ABI in the S/390 back-end which requires us to emit a parameter block to the .rodata section. It contains the label whereto __morestack needs to return. The parameter block needs to be explicit in RTL since we also need to take the address of it loaded into r1 in order to pass its address to __morestack. In order to express correctly what __morestack does its RTX also contained the return label. Hence we had the return label to occur twice in the insn stream. This is problematic when it comes to redirecting edges. The correlation between these two occurrences of the label cannot be expressed so when doing a redirect only the label in the jump RTX gets modified while the parameter block label stays as is. The patch avoids having two instancs of the label by merging the parameter block generation and the __morestack call RTX into one. By doing this I could also get rid of the unspec which was required for the parameter block generation so far. gcc/ChangeLog: 2019-10-10 Andreas Krebbel <krebbel@linux.ibm.com> PR target/91035 * config/s390/s390-protos.h (s390_output_split_stack_data): Add prototype. * config/s390/s390.md (UNSPECV_SPLIT_STACK_DATA): Remove. ("split_stack_data", "split_stack_call") ("split_stack_call_<mode>", "split_stack_cond_call") ("split_stack_cond_call_<mode>"): Remove. ("@split_stack_call<mode>", "@split_stack_cond_call<mode>"): New insn definition. * config/s390/s390.c (s390_output_split_stack_data): New function. (s390_expand_split_stack_prologue): Use the merged expander. From-SVN: r276790
Name |
Last commit
|
Last update |
---|---|---|
INSTALL | Loading commit data... | |
config | Loading commit data... | |
contrib | Loading commit data... | |
fixincludes | Loading commit data... | |
gcc | Loading commit data... | |
gnattools | Loading commit data... | |
gotools | Loading commit data... | |
include | Loading commit data... | |
intl | Loading commit data... | |
libada | Loading commit data... | |
libatomic | Loading commit data... | |
libbacktrace | Loading commit data... | |
libcc1 | Loading commit data... | |
libcpp | Loading commit data... | |
libdecnumber | Loading commit data... | |
libffi | Loading commit data... | |
libgcc | Loading commit data... | |
libgfortran | Loading commit data... | |
libgo | Loading commit data... | |
libgomp | Loading commit data... | |
libhsail-rt | Loading commit data... | |
libiberty | Loading commit data... | |
libitm | Loading commit data... | |
libobjc | Loading commit data... | |
liboffloadmic | Loading commit data... | |
libphobos | Loading commit data... | |
libquadmath | Loading commit data... | |
libsanitizer | Loading commit data... | |
libssp | Loading commit data... | |
libstdc++-v3 | Loading commit data... | |
libvtv | Loading commit data... | |
lto-plugin | Loading commit data... | |
maintainer-scripts | Loading commit data... | |
zlib | Loading commit data... | |
.dir-locals.el | Loading commit data... | |
.gitattributes | Loading commit data... | |
.gitignore | Loading commit data... | |
ABOUT-NLS | Loading commit data... | |
COPYING | Loading commit data... | |
COPYING.LIB | Loading commit data... | |
COPYING.RUNTIME | Loading commit data... | |
COPYING3 | Loading commit data... | |
COPYING3.LIB | Loading commit data... | |
ChangeLog | Loading commit data... | |
ChangeLog.jit | Loading commit data... | |
ChangeLog.tree-ssa | Loading commit data... | |
MAINTAINERS | Loading commit data... | |
Makefile.def | Loading commit data... | |
Makefile.in | Loading commit data... | |
Makefile.tpl | Loading commit data... | |
README | Loading commit data... | |
ar-lib | Loading commit data... | |
compile | Loading commit data... | |
config-ml.in | Loading commit data... | |
config.guess | Loading commit data... | |
config.rpath | Loading commit data... | |
config.sub | Loading commit data... | |
configure | Loading commit data... | |
configure.ac | Loading commit data... | |
depcomp | Loading commit data... | |
install-sh | Loading commit data... | |
libtool-ldflags | Loading commit data... | |
libtool.m4 | Loading commit data... | |
ltgcc.m4 | Loading commit data... | |
ltmain.sh | Loading commit data... | |
ltoptions.m4 | Loading commit data... | |
ltsugar.m4 | Loading commit data... | |
ltversion.m4 | Loading commit data... | |
lt~obsolete.m4 | Loading commit data... | |
missing | Loading commit data... | |
mkdep | Loading commit data... | |
mkinstalldirs | Loading commit data... | |
move-if-change | Loading commit data... | |
multilib.am | Loading commit data... | |
symlink-tree | Loading commit data... | |
test-driver | Loading commit data... | |
ylwrap | Loading commit data... |