This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/18562] SSE constant vector initialization produces dead constant values on stack
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 14 Sep 2005 06:51:53 -0000
- Subject: [Bug target/18562] SSE constant vector initialization produces dead constant values on stack
- References: <20041119084840.18562.uros@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From pinskia at gcc dot gnu dot org 2005-09-14 06:51 -------
Hmm, but vectors are not consider as aggregates.
at the tree level right before optimization, we have:
A_6 = {1.2999999523162841796875e+0, 1.2999999523162841796875e+0,
1.2999999523162841796875e+0, 1.2999999523162841796875e+0};
# result_26 = V_MAY_DEF <result_14>;
__builtin_ia32_storeups (&result, A_6);
I would have thought that VECTOR_CST would be considered a constant and propgrated into
__builtin_ia32_storeups and that we would have folded __builtin_ia32_storeups at the tree level.
So I think there are two issues now, the first is that we don't constant prop VECTOR_CST (if this is truely
a VECTOR_CST in store_ccp):
A_6 = {1.2999999523162841796875e+0, 1.2999999523162841796875e+0,
1.2999999523162841796875e+0, 1.2999999523162841796875e+0};
Lattice value changed to VARYING. Adding SSA edges to worklist.
And then we need a fold specific to x86 for __builtin_ia32_storeups, after that it should just work.
--
What |Removed |Added
----------------------------------------------------------------------------
BugsThisDependsOn|14295 |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18562