egcs-19990927: random output of genattrtab

pavenis@lanet.lv pavenis@lanet.lv
Wed Sep 29 10:44:00 GMT 1999


Tried to build egcs-19990927 for target i586-pc-msdosdjgpp. Build often fails due 
to conflicting prototypes of get_attr_length_prefix() and get_attr_length_opcode() 
between generated files insn_attrtab.c and insn-attr.h (return type seems to vary 
randomly between int and unsigned int).

---------------  End of output before make failed  ----------------
gcc  -DIN_GCC    -g  -DHAVE_CONFIG_H  -DSTANDARD_INCLUDE_DIR=\"\$DJDIR/include\" -
DSTANDARD_INCLUDE_COMPONENT=\"\"  -I. -I/devel/gcc/egcs-19990927/gcc -I/devel/gcc/egcs-19990927/gcc/config -
I/devel/gcc/egcs-19990927/gcc/../include -c insn-emit.c
gcc -c  -DIN_GCC    -g  -DHAVE_CONFIG_H  -DSTANDARD_INCLUDE_DIR=\"\$DJDIR/include\" -
DSTANDARD_INCLUDE_COMPONENT=\"\"  -I. -I/devel/gcc/egcs-19990927/gcc -I/devel/gcc/egcs-19990927/gcc/config -
I/devel/gcc/egcs-19990927/gcc/../include /devel/gcc/egcs-19990927/gcc/lcm.c
gcc -c  -DIN_GCC    -g  -DHAVE_CONFIG_H  -DSTANDARD_INCLUDE_DIR=\"\$DJDIR/include\" -
DSTANDARD_INCLUDE_COMPONENT=\"\"  -I. -I/devel/gcc/egcs-19990927/gcc -I/devel/gcc/egcs-19990927/gcc/config -
I/devel/gcc/egcs-19990927/gcc/../include /devel/gcc/egcs-19990927/gcc/profile.c
gcc -c  -DIN_GCC    -g  -DHAVE_CONFIG_H  -DSTANDARD_INCLUDE_DIR=\"\$DJDIR/include\" -
DSTANDARD_INCLUDE_COMPONENT=\"\"  -I. -I/devel/gcc/egcs-19990927/gcc -I/devel/gcc/egcs-19990927/gcc/config -
I/devel/gcc/egcs-19990927/gcc/../include /devel/gcc/egcs-19990927/gcc/genattrtab.c
gcc  -DIN_GCC    -g  -DHAVE_CONFIG_H  -o genattrtab \
 genattrtab.o rtl.o bitmap.o ggc-none.o print-rtl.o errors.o rtlanal.o ` case "obstack.o" in ?*) echo obstack.o ;; esac ` ` case "" in 
?*) echo  ;; esac ` ` case "" in ?*) echo  ;; esac `  ` case "" in ?*) echo  ;; esac ` ` case "" in ?*) echo  ;; esac ` 
./genattrtab /devel/gcc/egcs-19990927/gcc/config/i386/i386.md > tmp-attrtab.c
C:/DJGPP/BIN/bash.exe /devel/gcc/egcs-19990927/gcc/move-if-change tmp-attrtab.c insn-attrtab.c
touch s-attrtab
gcc  -DIN_GCC    -g  -DHAVE_CONFIG_H  -DSTANDARD_INCLUDE_DIR=\"\$DJDIR/include\" -
DSTANDARD_INCLUDE_COMPONENT=\"\"  -I. -I/devel/gcc/egcs-19990927/gcc -I/devel/gcc/egcs-19990927/gcc/config -
I/devel/gcc/egcs-19990927/gcc/../include -c insn-attrtab.c
insn-attrtab.c:7784: conflicting types for `get_attr_length_prefix'
insn-attr.h:25: previous declaration of `get_attr_length_prefix'
make.exe[1]: *** [insn-attrtab.o] Error 1
make.exe[1]: Leaving directory `c:/devel/gcc/egcs-19990927/build.djg/gcc'
make.exe: *** [all-gcc] Error 2

---------------------------------------------------------------------------
Retrying make sometimes fixes the problem. 

After that I simply run genattrtab with the same parameters 4 times:

#! /bin/sh
for x in 1 2 3 4; do
/genattrtab /devel/gcc/egcs-19990927/gcc/config/i386/i386.md > tmp-attrtab.c1.$x
done

and got 3 different outputs (2nd and 4th run gave identical output)

Below I'm including diffs of 3th and 4th run. egcs-19990920 seems to have the
same problem. I never had this problem earlier (egcs-1.1.X, gcc-2.95 and gcc-2.95.1,
gcc-2.95 prereleases). Of course it could be DJGPP specific problem (I have to modify
sources, but I did the same for earlier versions). I simply don't know why this happens.

Andris

---------------------------------------------------------------------------
--- tmp-attrtab.c1.3	Wed Sep 29 20:24:18 1999
+++ tmp-attrtab.c1.4	Wed Sep 29 20:26:26 1999
@@ -7430,8 +7430,8 @@
     }
 }
 
-extern unsigned int get_attr_length_opcode PROTO ((rtx));
-unsigned int
+extern int get_attr_length_opcode PROTO ((rtx));
+int
 get_attr_length_opcode (insn)
      rtx insn;
 {
@@ -7794,11 +7794,11 @@
         fatal_insn_not_found (insn);
       if (((which_alternative == 0) && ((((TARGET_DOUBLE_WITH_ADD) != (0)) && ((register_operand (operands[0], 
VOIDmode)) && (const1_operand (operands[2], VOIDmode)))) || (((! ((TARGET_DOUBLE_WITH_ADD) != (0))) || (! 
(register_operand (operands[0], VOIDmode)))) || (! (const1_operand (operands[2], VOIDmode)))))) && (general_operand 
(operands[0], HImode)))
         {
-	  return 1 /* min 0, max 1 */;
+	  return 1;
         }
       else
         {
-	  return 0 /* min 0, max 0 */;
+	  return 0;
         }
 
     case 158:
@@ -7807,11 +7807,11 @@
         fatal_insn_not_found (insn);
       if (((which_alternative != 2) && (! (pic_symbolic_operand (operands[2], SImode)))) && (general_operand (operands[0], 
HImode)))
         {
-	  return 1 /* min 0, max 1 */;
+	  return 1;
         }
       else
         {
-	  return 0 /* min 0, max 0 */;
+	  return 0;
         }
 
     case 73:
@@ -7820,11 +7820,11 @@
         fatal_insn_not_found (insn);
       if ((((which_alternative != 0) && (which_alternative != 1)) && (which_alternative != 2)) && (general_operand (operands[0], 
HImode)))
         {
-	  return 1 /* min 0, max 1 */;
+	  return 1;
         }
       else
         {
-	  return 0 /* min 0, max 0 */;
+	  return 0;
         }
 
     case 71:
@@ -7833,11 +7833,11 @@
         fatal_insn_not_found (insn);
       if ((which_alternative == 1) && (general_operand (operands[1], HImode)))
         {
-	  return 1 /* min 0, max 1 */;
+	  return 1;
         }
       else
         {
-	  return 0 /* min 0, max 0 */;
+	  return 0;
         }
 
     case 50:
@@ -7846,11 +7846,11 @@
         fatal_insn_not_found (insn);
       if ((((const0_operand (operands[1], QImode)) && ((register_operand (operands[0], QImode)) && ((TARGET_USE_MOV0) != 
(0)))) || (((! (const0_operand (operands[1], QImode))) || ((! (register_operand (operands[0], QImode))) || (! ((TARGET_USE_MOV0) 
!= (0))))) && (((which_alternative == 3) || (((TARGET_MOVX) != (0)) && (which_alternative == 1))) || ((which_alternative != 3) && 
((! ((TARGET_MOVX) != (0))) || (which_alternative != 1)))))) && (general_operand (operands[0], HImode)))
         {
-	  return 1 /* min 0, max 1 */;
+	  return 1;
         }
       else
         {
-	  return 0 /* min 0, max 0 */;
+	  return 0;
         }
 
     case 42:
@@ -7859,11 +7859,11 @@
         fatal_insn_not_found (insn);
       if ((((TARGET_MOVX) != (0)) && (which_alternative == 1)) || ((which_alternative == 0) && 
((TARGET_PARTIAL_REG_STALL) == (0))))
         {
-	  return 0 /* min 0, max 0 */;
+	  return 0;
         }
       else
         {
-	  return 1 /* min 0, max 1 */;
+	  return 1;
         }
 
     case 41:
@@ -7872,11 +7872,11 @@
         fatal_insn_not_found (insn);
       if ((((! (const0_operand (operands[1], HImode))) || ((! (register_operand (operands[0], HImode))) || (! ((TARGET_USE_MOV0) 
!= (0))))) && (((TARGET_MOVX) != (0)) && (which_alternative == 1))) || ((which_alternative == 0) && 
((TARGET_PARTIAL_REG_STALL) == (0))))
         {
-	  return 0 /* min 0, max 0 */;
+	  return 0;
         }
       else
         {
-	  return 1 /* min 0, max 1 */;
+	  return 1;
         }
 
     case 36:
@@ -7885,11 +7885,11 @@
         fatal_insn_not_found (insn);
       if (((! ((flag_pic) != (0))) || (! (symbolic_operand (operands[1], SImode)))) && (general_operand (operands[0], HImode)))
         {
-	  return 1 /* min 0, max 1 */;
+	  return 1;
         }
       else
         {
-	  return 0 /* min 0, max 0 */;
+	  return 0;
         }
 
     case 35:
@@ -7898,11 +7898,11 @@
         fatal_insn_not_found (insn);
       if ((((const0_operand (operands[1], SImode)) && ((register_operand (operands[0], SImode)) && ((TARGET_USE_MOV0) != 
(0)))) || (((! (const0_operand (operands[1], SImode))) || ((! (register_operand (operands[0], SImode))) || (! ((TARGET_USE_MOV0) 
!= (0))))) && ((! ((flag_pic) != (0))) || (! (symbolic_operand (operands[1], SImode)))))) && (general_operand (operands[0], 
HImode)))
         {
-	  return 1 /* min 0, max 1 */;
+	  return 1;
         }
       else
         {
-	  return 0 /* min 0, max 0 */;
+	  return 0;
         }
 
     case 39:
@@ -7910,11 +7910,11 @@
       extract_insn (insn);
       if (general_operand (operands[1], HImode))
         {
-	  return 1 /* min 0, max 1 */;
+	  return 1;
         }
       else
         {
-	  return 0 /* min 0, max 0 */;
+	  return 0;
         }
 
     case 476:
@@ -8068,23 +8068,23 @@
       extract_insn (insn);
       if (general_operand (operands[0], HImode))
         {
-	  return 1 /* min 0, max 1 */;
+	  return 1;
         }
       else
         {
-	  return 0 /* min 0, max 0 */;
+	  return 0;
         }
 
     case 48:
     case 49:
-      return 1 /* min 0, max 1 */;
+      return 1;
 
     case -1:
       if (GET_CODE (PATTERN (insn)) != ASM_INPUT
           && asm_noperands (PATTERN (insn)) < 0)
         fatal_insn_not_found (insn);
     default:
-      return 0 /* min 0, max 0 */;
+      return 0;
 
     }
 }



More information about the Gcc-bugs mailing list