aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2002-09-04 23:59:56 +0000
committerDale Johannesen <dalej@gcc.gnu.org>2002-09-04 23:59:56 +0000
commitf57f9cb867c637fb60b443770f77f54114c021c9 (patch)
tree60e9f1221f91e15a131228021777f371162fb3ef /gcc
parented6cc1f5cb3b6cc316f2f67583b62b92a5de4e4b (diff)
downloadgcc-f57f9cb867c637fb60b443770f77f54114c021c9.zip
gcc-f57f9cb867c637fb60b443770f77f54114c021c9.tar.gz
gcc-f57f9cb867c637fb60b443770f77f54114c021c9.tar.bz2
Fix struct rtx_const so veclo and vechi don't share storage.
From-SVN: r56825
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/varasm.c14
2 files changed, 13 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c9718d5..d909883 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-09-04 Dale Johannesen <dalej@apple.com>
+
+ * varasm.c (struct rtx_const, decode_rtx_const):
+ Make veclo and vechi fields not share storage.
+
Thu Sep 5 00:34:33 2002 J"orn Rennecke <joern.rennecke@superh.com>
* loop.c (scan_loop): Don't mark separate insns out of a libcall
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 02078a3..216e144 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -2167,8 +2167,10 @@ struct rtx_const GTY(())
} 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];
+ 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;
};
@@ -2980,13 +2982,13 @@ decode_rtx_const (mode, x, value)
elt = CONST_VECTOR_ELT (x, i);
if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT)
{
- value->un.veclo[i] = (HOST_WIDE_INT) INTVAL (elt);
- value->un.vechi[i] = 0;
+ value->un.vec[i].veclo = (HOST_WIDE_INT) INTVAL (elt);
+ value->un.vec[i].vechi = 0;
}
else if (GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
{
- value->un.veclo[i] = (HOST_WIDE_INT) CONST_DOUBLE_LOW (elt);
- value->un.vechi[i] = (HOST_WIDE_INT) CONST_DOUBLE_HIGH (elt);
+ value->un.vec[i].veclo = (HOST_WIDE_INT) CONST_DOUBLE_LOW (elt);
+ value->un.vec[i].vechi = (HOST_WIDE_INT) CONST_DOUBLE_HIGH (elt);
}
else
abort ();