diff --git a/lib/Target/Sparc/SparcRegisterInfo.cpp b/lib/Target/Sparc/SparcRegisterInfo.cpp index 114e79569cc..c5034d57ad6 100644 --- a/lib/Target/Sparc/SparcRegisterInfo.cpp +++ b/lib/Target/Sparc/SparcRegisterInfo.cpp @@ -109,7 +109,8 @@ void SparcV8RegisterInfo::emitPrologue(MachineFunction &MF) const { // ---------- // 23 words * 4 bytes per word = 92 bytes NumBytes += 92; - NumBytes = (NumBytes + 3) & ~3; // Round up to next word boundary + NumBytes = (NumBytes + 7) & ~7; // Round up to next doubleword boundary + // (Technically, a word boundary should be sufficient, but SPARC as complains) BuildMI(MBB, MBB.begin(), V8::SAVEri, 2, V8::SP).addImm(-NumBytes).addReg(V8::SP); } diff --git a/lib/Target/SparcV8/SparcV8RegisterInfo.cpp b/lib/Target/SparcV8/SparcV8RegisterInfo.cpp index 114e79569cc..c5034d57ad6 100644 --- a/lib/Target/SparcV8/SparcV8RegisterInfo.cpp +++ b/lib/Target/SparcV8/SparcV8RegisterInfo.cpp @@ -109,7 +109,8 @@ void SparcV8RegisterInfo::emitPrologue(MachineFunction &MF) const { // ---------- // 23 words * 4 bytes per word = 92 bytes NumBytes += 92; - NumBytes = (NumBytes + 3) & ~3; // Round up to next word boundary + NumBytes = (NumBytes + 7) & ~7; // Round up to next doubleword boundary + // (Technically, a word boundary should be sufficient, but SPARC as complains) BuildMI(MBB, MBB.begin(), V8::SAVEri, 2, V8::SP).addImm(-NumBytes).addReg(V8::SP); }