From: Maciej W. Rozycki Date: Sun, 12 Jan 2025 16:48:53 +0000 (+0000) Subject: Alpha: Add memory clobbers to `builtin_longjmp' expansion X-Git-Tag: basepoints/gcc-16~2721 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=46861167f548ec622918d95acd2424b64f56797d;p=thirdparty%2Fgcc.git Alpha: Add memory clobbers to `builtin_longjmp' expansion Add the same memory clobbers to `builtin_longjmp' for Alpha as with commit 41439bf6a647 ("builtins.c (expand_builtin_longjmp): Added two memory clobbers."), to prevent instructions that access memory via the frame or stack pointer from being moved across the write to the frame pointer. gcc/ * config/alpha/alpha.md (builtin_longjmp): Add memory clobbers. --- diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index 376c4cba90c5..35c8030422f5 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -5005,6 +5005,8 @@ rtx pv = gen_rtx_REG (Pmode, 27); /* This bit is the same as expand_builtin_longjmp. */ + emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode))); + emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx)); emit_move_insn (hard_frame_pointer_rtx, fp); emit_move_insn (pv, lab); emit_stack_restore (SAVE_NONLOCAL, stack);