+Sat Jun 2 06:53:50 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * except.c (expand_builtin_frob_return_addr): Add missing call
+ to convert_memory_address #ifdef POINTERS_EXTEND_UNSIGNED.
+ (expand_builtin_eh_return): Likewise.
+ (expand_eh_return): Clean up ptr_mode != Pmode cases.
+
2001-06-01 Jan van Male <jan.vanmale@fenk.wau.nl>
* doc/invoke.texi: Remove references to papers about sequence points
{
rtx addr = expand_expr (addr_tree, NULL_RTX, Pmode, 0);
+#ifdef POINTERS_EXTEND_UNSIGNED
+ addr = convert_memory_address (Pmode, addr);
+#endif
+
#ifdef RETURN_ADDR_OFFSET
addr = force_reg (Pmode, addr);
addr = plus_constant (addr, -RETURN_ADDR_OFFSET);
stackadj = expand_expr (stackadj_tree, cfun->eh->ehr_stackadj, VOIDmode, 0);
handler = expand_expr (handler_tree, cfun->eh->ehr_handler, VOIDmode, 0);
+#ifdef POINTERS_EXTEND_UNSIGNED
+ stackadj = convert_memory_address (Pmode, stackadj);
+ handler = convert_memory_address (Pmode, handler);
+#endif
+
if (! cfun->eh->ehr_label)
{
cfun->eh->ehr_stackadj = copy_to_reg (stackadj);
else
#endif
{
- rtx handler;
-
ra = EH_RETURN_HANDLER_RTX;
if (! ra)
{
}
emit_move_insn (sa, cfun->eh->ehr_stackadj);
-
- handler = cfun->eh->ehr_handler;
- if (GET_MODE (ra) != Pmode)
- {
-#ifdef POINTERS_EXTEND_UNSIGNED
- handler = convert_memory_address (GET_MODE (ra), handler);
-#else
- handler = convert_to_mode (GET_MODE (ra), handler, 0);
-#endif
- }
- emit_move_insn (ra, handler);
+ emit_move_insn (ra, cfun->eh->ehr_handler);
}
emit_label (around_label);