This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/58139] New: PowerPC volatile VSX register live across call
- From: "dje at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 12 Aug 2013 17:15:28 +0000
- Subject: [Bug target/58139] New: PowerPC volatile VSX register live across call
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58139
Bug ID: 58139
Summary: PowerPC volatile VSX register live across call
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: dje at gcc dot gnu.org
void tightness3_intrinsics2(double* A, double* B, int N) {
__vector double * vA = (__vector double*)A;
__vector double * vB = (__vector double*)B;
__vector double va0, va1;
double b0, b1, b2, b3;
va0 = vA[0];
va1 = vA[1];
b0 = log(vec_extract(va0, 0));
b1 = log(vec_extract(va0, 1));
b2 = log(vec_extract(va1, 0));
b3 = log(vec_extract(va1, 1));
__vector double vb0 = {b0, b1};
__vector double vb1 = {b2, b3};
vB[0] = vb0;
vB[1] = vb1;
}
xxpermdi 1,63,63,2
xxpermdi 30,30,29,0
bl log
nop
addi 1,1,192
li 0,-80
stxvd2x 30,0,30
GCC should not expect VSX 30 to be preserved across the call to log().