diff options
author | Dale Johannesen <dalej@apple.com> | 2002-09-04 23:59:56 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@gcc.gnu.org> | 2002-09-04 23:59:56 +0000 |
commit | f57f9cb867c637fb60b443770f77f54114c021c9 (patch) | |
tree | 60e9f1221f91e15a131228021777f371162fb3ef /gcc | |
parent | ed6cc1f5cb3b6cc316f2f67583b62b92a5de4e4b (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/varasm.c | 14 |
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 (); |