Add stack alignment information for Sparc.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 19 Dec 2013 02:21:16 +0000 (02:21 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 19 Dec 2013 02:21:16 +0000 (02:21 +0000)
This matches the data in clang which was added by Jakob Stoklund Olesen in
r179596.

Thanks for erikjv on irc for pointing me to the relevant documents:
http://sparc.com/standards/64.psabi.1.35.ps.Z
page 25: Every stack frame must be 16-byte aligned.

http://sparc.com/standards/psABI3rd.pdf
page 3-10: Although the architecture requires only word alignment, software convention and the operating system require every stack frame to be doubleword aligned.

I tried to add a test, but it looks like sparc doesn't implement dynamic stack
realignment. This will be tested in clang shortly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197646 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Sparc/SparcTargetMachine.cpp

index 172bb66b7c8c77de5396c06b78264f39a2fd3920..ac26765aecfcd5d65d0d7f98d9658813b913cded 100644 (file)
@@ -41,6 +41,11 @@ static std::string computeDataLayout(const SparcSubtarget &ST) {
   else
     Ret += "-f128:64-n32";
 
+  if (ST.is64Bit())
+    Ret += "-S128";
+  else
+    Ret += "-S64";
+
   return Ret;
 }