diff --git a/gcc/ChangeLog b/gcc/ChangeLog index edf66be3c8d8..69ef14413a67 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-02-11 Bob Wilson + + * config/xtensa/xtensa.md (set_frame_ptr): Change rtl to set reg a7. + * config/xtensa/xtensa.c (xtensa_reorg): Search for UNSPECV_SET_FP + as a SET pattern. + 2003-02-11 Roger Sayle * builtins.c: Fix failure caused by commiting wrong patch. diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c index cb7d7e5e9cba..f2546288ed91 100644 --- a/gcc/config/xtensa/xtensa.c +++ b/gcc/config/xtensa/xtensa.c @@ -2241,8 +2241,9 @@ xtensa_reorg (first) continue; pat = PATTERN (insn); - if (GET_CODE (pat) == UNSPEC_VOLATILE - && (XINT (pat, 1) == UNSPECV_SET_FP)) + if (GET_CODE (pat) == SET + && GET_CODE (SET_SRC (pat)) == UNSPEC_VOLATILE + && (XINT (SET_SRC (pat), 1) == UNSPECV_SET_FP)) { set_frame_ptr_insn = insn; break; diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md index 5db5c0ca487d..cbda342917b3 100644 --- a/gcc/config/xtensa/xtensa.md +++ b/gcc/config/xtensa/xtensa.md @@ -2387,7 +2387,7 @@ ;; to set up the frame pointer. (define_insn "set_frame_ptr" - [(unspec_volatile [(const_int 0)] UNSPECV_SET_FP)] + [(set (reg:SI A7_REG) (unspec_volatile [(const_int 0)] UNSPECV_SET_FP))] "" "* { @@ -2401,7 +2401,7 @@ ;; Post-reload splitter to remove fp assignment when it's not needed. (define_split - [(unspec_volatile [(const_int 0)] UNSPECV_SET_FP)] + [(set (reg:SI A7_REG) (unspec_volatile [(const_int 0)] UNSPECV_SET_FP))] "reload_completed && !frame_pointer_needed" [(unspec [(const_int 0)] UNSPEC_NOP)] "")