https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84066

--- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to igor.v.tsimbalist from comment #4)
> Created attachment 43280 [details]
> updated patch

-      mem = gen_rtx_MEM (Pmode, plus_constant (Pmode, operands[0],
-                                              3 * GET_MODE_SIZE (Pmode)));
-      reg_ssp = gen_reg_rtx (Pmode);
+      mem = gen_rtx_MEM (word_mode, plus_constant (Pmode, operands[0],
+                                             3 * GET_MODE_SIZE (Pmode)));

The first 3 fields are SP, FP and IP, which are in ptr_mode, not Pmode.

       /* Compute the numebr of frames to adjust.  */
+      reg_adj = gen_rtx_SUBREG (Pmode, reg_ssp, 0);

reg_ssp must be in word_mode, not in Pmode.

Please show the assembly outputs of __builtin_setjmp and __builtin_longjmp
with the updated patch.

Reply via email to