This is the mail archive of the gcc-bugs@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]

Re: New trunk breakage on mips-sgi-irix6.2 stage1 compiling libgcc2


On May  3, 2001, "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu> wrote:

>> From: Alexandre Oliva <aoliva@redhat.com>

>> Unfortunately, I don't have access to an IRIX box at the moment, and
>> I'm about to take off for tonight, so I won't be able to do much about
>> it in the next 24 hours :-(

> Ok, though lack of access to IRIX shouldn't stop you since I was able
> to trigger it in a cross.

Indeed.  Sorry, I had missed this fact in your previous message.  I
had thought it was impossible to build a cross compiler to irix
because I lacked the headers and an assembler/linker, but I hadn't
realized I wouldn't even need them, because the crash occurred within
GCC.  Doh! :-)

Here's a patch that allowed me to build all of libgcc with and without
-mabi=64, on a x86-hosted compiler.  Ok to install?

Index: gcc/ChangeLog
from  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.md: Sign extend CONST_INTs.

Index: gcc/config/mips/mips.md
--- gcc/config/mips/mips.md~	Sun May  6 08:47:48 2001
+++ gcc/config/mips/mips.md	Sun May  6 08:41:41 2001
@@ -2277,7 +2277,10 @@
 			       copy_to_mode_reg (SImode, GEN_INT (-1)),
 			       GEN_INT (0x6)));
       emit_insn (gen_div_trap (operands[2],
-			       copy_to_mode_reg (SImode, GEN_INT (BITMASK_HIGH)),
+			       copy_to_mode_reg (SImode,
+						 GEN_INT
+						 (trunc_int_for_mode
+						  (BITMASK_HIGH, SImode))),
 			       GEN_INT (0x6)));
     }
   
@@ -2324,7 +2327,8 @@
 			       copy_to_mode_reg (DImode, GEN_INT (-1)),
 			       GEN_INT (0x6)));
       emit_insn (gen_div_trap (operands[2],
-			       copy_to_mode_reg (DImode, GEN_INT (BITMASK_HIGH)),
+			       copy_to_mode_reg (DImode,
+						 GEN_INT (BITMASK_HIGH)),
 			       GEN_INT (0x6)));
     }
   
@@ -2535,7 +2539,10 @@
 			       copy_to_mode_reg (SImode, GEN_INT (-1)),
 			       GEN_INT (0x6)));
       emit_insn (gen_div_trap (operands[2],
-			       copy_to_mode_reg (SImode, GEN_INT (BITMASK_HIGH)),
+			       copy_to_mode_reg (SImode,
+						 GEN_INT
+						 (trunc_int_for_mode
+						  (BITMASK_HIGH, SImode))),
 			       GEN_INT (0x6)));
     }
   
@@ -2575,7 +2582,8 @@
 			       copy_to_mode_reg (DImode, GEN_INT (-1)),
 			       GEN_INT (0x6)));
       emit_insn (gen_div_trap (operands[2],
-			       copy_to_mode_reg (DImode, GEN_INT (BITMASK_HIGH)),
+			       copy_to_mode_reg (DImode,
+						 GEN_INT (BITMASK_HIGH)),
 			       GEN_INT (0x6)));
     }
   
@@ -2615,7 +2623,10 @@
 			       copy_to_mode_reg (SImode, GEN_INT (-1)),
 			       GEN_INT (0x6)));
       emit_insn (gen_div_trap (operands[2],
-			       copy_to_mode_reg (SImode, GEN_INT (BITMASK_HIGH)),
+			       copy_to_mode_reg (SImode,
+						 GEN_INT
+						 (trunc_int_for_mode
+						  (BITMASK_HIGH, SImode))),
 			       GEN_INT (0x6)));
     }
   
@@ -2655,7 +2666,8 @@
 			       copy_to_mode_reg (DImode, GEN_INT (-1)),
 			       GEN_INT (0x6)));
       emit_insn (gen_div_trap (operands[2],
-			       copy_to_mode_reg (DImode, GEN_INT (BITMASK_HIGH)),
+			       copy_to_mode_reg (DImode,
+						 GEN_INT (BITMASK_HIGH)),
 			       GEN_INT (0x6)));
     }
   
@@ -4319,7 +4331,8 @@ move\\t%0,%z4\\n\\
 
       emit_label (label1);
       emit_move_insn (reg2, gen_rtx_MINUS (DFmode, operands[1], reg1));
-      emit_move_insn (reg3, GEN_INT (BITMASK_HIGH));
+      emit_move_insn (reg3, GEN_INT (trunc_int_for_mode
+				     (BITMASK_HIGH, SImode)));
 
       emit_insn (gen_fix_truncdfsi2 (operands[0], reg2));
       emit_insn (gen_iorsi3 (operands[0], operands[0], reg3));
@@ -4406,7 +4419,8 @@ move\\t%0,%z4\\n\\
 
       emit_label (label1);
       emit_move_insn (reg2, gen_rtx_MINUS (SFmode, operands[1], reg1));
-      emit_move_insn (reg3, GEN_INT (BITMASK_HIGH));
+      emit_move_insn (reg3, GEN_INT (trunc_int_for_mode (BITMASK_HIGH,
+							 SImode)));
 
       emit_insn (gen_fix_truncsfsi2 (operands[0], reg2));
       emit_insn (gen_iorsi3 (operands[0], operands[0], reg3));
@@ -5179,7 +5193,9 @@ move\\t%0,%z4\\n\\
 		(match_dup 3)))]
   "
 {
-  operands[2] = GEN_INT (INTVAL (operands[1]) & BITMASK_UPPER16);
+  operands[2] = GEN_INT (trunc_int_for_mode (INTVAL (operands[1])
+					     & BITMASK_UPPER16,
+					     SImode));
   operands[3] = GEN_INT (INTVAL (operands[1]) & BITMASK_LOWER16);
 }")
 

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer                  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp        oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist    *Please* write to mailing lists, not to me

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