aboutsummaryrefslogtreecommitdiff
path: root/libgcc/enable-execute-stack-mprotect.c
diff options
context:
space:
mode:
authorAlexander Monakov <amonakov@ispras.ru>2023-01-13 21:04:02 +0300
committerAlexander Monakov <amonakov@ispras.ru>2023-01-13 21:33:14 +0300
commit733a1b777f16cd397b43a242d9c31761f66d3da8 (patch)
treeaecfd13965c06cc086077992307d31d06a75714f /libgcc/enable-execute-stack-mprotect.c
parentb4b1c6aa6d28d3afe989a6dc3210606a3d55a367 (diff)
downloadgcc-733a1b777f16cd397b43a242d9c31761f66d3da8.zip
gcc-733a1b777f16cd397b43a242d9c31761f66d3da8.tar.gz
gcc-733a1b777f16cd397b43a242d9c31761f66d3da8.tar.bz2
sched-deps: do not schedule pseudos across calls [PR108117]
Scheduling across calls in the pre-RA scheduler is problematic: we do not take liveness info into account, and are thus prone to extending lifetime of a pseudo over the loop, requiring a callee-saved hardreg or causing a spill. If current function called a setjmp, lifting an assignment over a call may be incorrect if a longjmp would happen before the assignment. Thanks to Jose Marchesi for testing on AArch64. gcc/ChangeLog: PR rtl-optimization/108117 PR rtl-optimization/108132 * sched-deps.cc (deps_analyze_insn): Do not schedule across calls before reload. gcc/testsuite/ChangeLog: PR rtl-optimization/108117 PR rtl-optimization/108132 * gcc.dg/pr108117.c: New test.
Diffstat (limited to 'libgcc/enable-execute-stack-mprotect.c')
0 files changed, 0 insertions, 0 deletions