]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/32335 (libgcc build failure, ICE in cselib_record_set, at cselib.c:1508)
authorRask Ingemann Lambertsen <rask@gcc.gnu.org>
Wed, 20 Jun 2007 19:57:32 +0000 (19:57 +0000)
committerRask Ingemann Lambertsen <rask@gcc.gnu.org>
Wed, 20 Jun 2007 19:57:32 +0000 (19:57 +0000)
2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>

PR target/32335
* config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
for TARGET_A16.
* config/m32c/prologue.md (epilogue_exitd_16): New.
(epilogue_reit_16): New.
(epilogue_exitd): Rename to epilogue_exitd_24.
(epilogue_reit): Rename to epilogue_reit_24.

From-SVN: r125892

gcc/config/m32c/m32c.c
gcc/config/m32c/prologue.md

index 097c3a3a83d5b9608a5127db90174ea9a41f1b8c..161d5edd282c0bf949d00b55aeba058aa1f45489 100644 (file)
@@ -4026,12 +4026,17 @@ m32c_emit_epilogue (void)
       else
        emit_insn (gen_poppsi (gen_rtx_REG (PSImode, FP_REGNO)));
       emit_insn (gen_popm (GEN_INT (cfun->machine->intr_pushm)));
-      emit_jump_insn (gen_epilogue_reit (GEN_INT (TARGET_A16 ? 4 : 6)));
+      if (TARGET_A16)
+       emit_jump_insn (gen_epilogue_reit_16 ());
+      else
+       emit_jump_insn (gen_epilogue_reit_24 ());
     }
   else if (cfun->machine->use_rts)
     emit_jump_insn (gen_epilogue_rts ());
+  else if (TARGET_A16)
+    emit_jump_insn (gen_epilogue_exitd_16 ());
   else
-    emit_jump_insn (gen_epilogue_exitd (GEN_INT (TARGET_A16 ? 2 : 4)));
+    emit_jump_insn (gen_epilogue_exitd_24 ());
   emit_barrier ();
 }
 
index 81d35a1c965f12925e51edcc078bc6d56be5e899..23a38f0a22877b6ed953a8b7e52127e31fb20309 100644 (file)
   [(set_attr "flags" "x")]
   )
 
-(define_insn "epilogue_exitd"
+(define_insn "epilogue_exitd_16"
+  [(set (reg:HI SP_REGNO)
+       (plus:HI (reg:HI FB_REGNO)
+             (const_int 2)))
+   (set (reg:HI FB_REGNO)
+       (mem:HI (reg:HI FB_REGNO)))
+   (return)
+   ]
+  "TARGET_A16"
+  "exitd"
+  [(set_attr "flags" "x")]
+  )
+
+(define_insn "epilogue_reit_16"
+  [(set (reg:HI SP_REGNO)
+       (plus:HI (reg:HI SP_REGNO)
+             (const_int 4)))
+   (return)
+   ]
+  "TARGET_A16"
+  "reit"
+  [(set_attr "flags" "x")]
+  )
+
+(define_insn "epilogue_exitd_24"
   [(set (reg:PSI SP_REGNO)
        (plus:PSI (reg:PSI FB_REGNO)
-             (match_operand 0 "const_int_operand" "i")))
+             (const_int 4)))
    (set (reg:PSI FB_REGNO)
        (mem:PSI (reg:PSI FB_REGNO)))
    (return)
    ]
-  ""
+  "TARGET_A24"
   "exitd"
   [(set_attr "flags" "x")]
   )
 
-(define_insn "epilogue_reit"
+(define_insn "epilogue_reit_24"
   [(set (reg:PSI SP_REGNO)
        (plus:PSI (reg:PSI SP_REGNO)
-             (match_operand 0 "const_int_operand" "i")))
+             (const_int 6)))
    (return)
    ]
-  ""
+  "TARGET_A24"
   "reit"
   [(set_attr "flags" "x")]
   )