This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

fix 64-bit sign extend problem


We generate an invalid SImode CONST_INT compiling libiberty/regex.c
for m68k with -m5200 from an alpha host.


r~


        * expr.c (move_by_pieces_1): Extend size before negation.

Index: expr.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/expr.c,v
retrieving revision 1.413
diff -c -p -d -r1.413 expr.c
*** expr.c	2002/01/12 14:33:18	1.413
--- expr.c	2002/01/24 01:14:22
*************** move_by_pieces_1 (genfun, mode, data)
*** 1575,1583 ****
  	from1 = adjust_address (data->from, mode, data->offset);
  
        if (HAVE_PRE_DECREMENT && data->explicit_inc_to < 0)
! 	emit_insn (gen_add2_insn (data->to_addr, GEN_INT (-size)));
        if (HAVE_PRE_DECREMENT && data->explicit_inc_from < 0)
! 	emit_insn (gen_add2_insn (data->from_addr, GEN_INT (-size)));
  
        if (data->to)
  	emit_insn ((*genfun) (to1, from1));
--- 1575,1585 ----
  	from1 = adjust_address (data->from, mode, data->offset);
  
        if (HAVE_PRE_DECREMENT && data->explicit_inc_to < 0)
! 	emit_insn (gen_add2_insn (data->to_addr,
! 				  GEN_INT (-(HOST_WIDE_INT)size)));
        if (HAVE_PRE_DECREMENT && data->explicit_inc_from < 0)
! 	emit_insn (gen_add2_insn (data->from_addr,
! 				  GEN_INT (-(HOST_WIDE_INT)size)));
  
        if (data->to)
  	emit_insn ((*genfun) (to1, from1));


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]