https://gcc.gnu.org/g:46861167f548ec622918d95acd2424b64f56797d

commit r15-6832-g46861167f548ec622918d95acd2424b64f56797d
Author: Maciej W. Rozycki <ma...@orcam.me.uk>
Date:   Sun Jan 12 16:48:53 2025 +0000

    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:
---
 gcc/config/alpha/alpha.md | 2 ++
 1 file changed, 2 insertions(+)

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);

Reply via email to