johannes 02/09/03 16:41:59
Modified: gcc varasm.c
Log:
Reenable vector-constant hashing, so compiler doesn't think all
vector constants are the same.
Revision Changes Path
1.80 +7 -11 gcc3/gcc/varasm.c
Index: varasm.c
===================================================================
RCS file: /cvs/Darwin/gcc3/gcc/varasm.c,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -r1.79 -r1.80
--- varasm.c 2002/09/02 03:45:52 1.79
+++ varasm.c 2002/09/03 23:41:59 1.80
@@ -2254,15 +2254,15 @@
} GTY ((tag ("0"))) di;
/* The max vector size we have is 8 wide. This should be enough. */
- HOST_WIDE_INT veclo[16];
- HOST_WIDE_INT vechi[16];
+ /* APPLE LOCAL AltiVec */
+ /* fix so store into vechi[] doesn't clobber veclo[].
+ This is a union after all! */
+ struct rtx_const_vec {
+ HOST_WIDE_INT veclo;
+ HOST_WIDE_INT vechi;
+ } GTY ((tag ("2"))) vec[16];
} GTY ((desc ("%1.kind >= RTX_INT"), descbits ("1"))) un;
};
-#if 0
-/* APPLE LOCAL AltiVec */
-/* fix so store into vechi[] doesn't clobber veclo[] */
- struct {HOST_WIDE_INT veclo, vechi; } vec[16];
-#endif
/* Uniquize all constants that appear in memory.
Each constant in memory thus far output is recorded
in `const_hash_table'. */
@@ -3145,19 +3145,15 @@
elt = CONST_VECTOR_ELT (x, i);
if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT)
{
-#if 0 /* APPLE FIXME */
/* APPLE LOCAL AltiVec */
value->un.vec[i].veclo = (HOST_WIDE_INT) INTVAL (elt);
value->un.vec[i].vechi = 0;
-#endif
}
else if (GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
{
-#if 0 /* APPLE FIXME */
/* APPLE LOCAL AltiVec */
value->un.vec[i].veclo = (HOST_WIDE_INT) CONST_DOUBLE_LOW (elt);
value->un.vec[i].vechi = (HOST_WIDE_INT) CONST_DOUBLE_HIGH (elt);
-#endif
}
else
abort ();