This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/47755] VSX code generates a TOC reference to clear memory
- From: "meissner at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 4 Mar 2011 22:46:47 +0000
- Subject: [Bug target/47755] VSX code generates a TOC reference to clear memory
- Auto-submitted: auto-generated
- References: <bug-47755-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47755
Michael Meissner <meissner at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Last reconfirmed| |2011.03.04 22:46:42
Resolution|FIXED |
Ever Confirmed|0 |1
--- Comment #7 from Michael Meissner <meissner at gcc dot gnu.org> 2011-03-04 22:46:42 UTC ---
It appears the patch was not complete.
The patch now breaks other V2DImode constants. In particular:
vector long long a = (vector long long) { -1, 0 }
will generate a vsplitw <reg>,0 which skips the -1. The problem is in
easy_altivec_constant in the line:
step = GET_MODE_NUNITS (mode) / 4;
For V2DImode, step is 0, and the rest of the tests fail.
The enclosed patch tightens this to only allow all 0's or all 1's as easy V2DI
constants (and all 0's as an easy V2DF constant).