https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85173
--- Comment #9 from ktkachov at gcc dot gnu.org --- Author: ktkachov Date: Tue Apr 10 09:58:57 2018 New Revision: 259266 URL: https://gcc.gnu.org/viewcvs?rev=259266&root=gcc&view=rev Log: [explow] PR target/85173: validize memory before passing it on to target probe_stack In this PR the expansion code emits an invalid memory address for the stack probe, which the backend fails to recognise. The address is created explicitly in anti_adjust_stack_and_probe_stack_clash in explow.c and passed down to gen_probe_stack without any validation in emit_stack_probe. This patch fixes the ICE by calling validize_mem on the memory location before passing it down to the target. Jakub pointed out that we also want to create valid addresses for the probe_stack_address case, so this patch creates an expand operand and legitimizes it before passing it down to the probe_stack_address expander. This patch passes bootstrap and testing on arm-none-linux-gnueabihf and aarch64-none-linux-gnu and ppc64le-redhat-linux on gcc112 in the compile farm. PR target/85173 * explow.c (emit_stack_probe): Call validize_mem on memory location before passing it to gen_probe_stack. Create address operand and legitimize it for the probe_stack_address case. * gcc.target/arm/pr85173.c: New test. Added: trunk/gcc/testsuite/gcc.target/arm/pr85173.c Modified: trunk/gcc/ChangeLog trunk/gcc/explow.c trunk/gcc/testsuite/ChangeLog