Fix 32/64 problem with sjlj exceptions

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Fri Aug 1 22:19:00 GMT 2003


An obvious fix since exc_ptr is ptr_mode, not Pmode.  Not tested since there's
no working 32/64 ia64 port now, the only place where I've seen this come up.

Fri Aug  1 18:22:57 2003  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* except.c (sjlj_emit_dispatch_table): Use ptr_mode, not Pmode,
	for accesses to exc_ptr.

*** except.c	19 Jul 2003 14:47:02 -0000	1.248
--- except.c	1 Aug 2003 22:15:28 -0000
*************** sjlj_emit_dispatch_table (rtx dispatch_l
*** 2141,2150 ****
  
    mem = adjust_address (fc, word_mode, sjlj_fc_data_ofs);
!   if (word_mode != Pmode)
      {
  #ifdef POINTERS_EXTEND_UNSIGNED
!       mem = convert_memory_address (Pmode, mem);
  #else
!       mem = convert_to_mode (Pmode, mem, 0);
  #endif
      }
--- 2141,2150 ----
  
    mem = adjust_address (fc, word_mode, sjlj_fc_data_ofs);
!   if (word_mode != ptr_mode)
      {
  #ifdef POINTERS_EXTEND_UNSIGNED
!       mem = convert_memory_address (ptr_mode, mem);
  #else
!       mem = convert_to_mode (ptr_mode, mem, 0);
  #endif
      }



More information about the Gcc-patches mailing list