summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-12-19 02:21:16 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-12-19 02:21:16 +0000
commit33f01f9848bacd31cec613d1b4341e24eb527845 (patch)
tree408d44f6f2291546dcefdc9b0977faae862dbd15
parent4b70bfc905f3ac68a8429f9fe0016e30433b3b0c (diff)
downloadllvm-33f01f9848bacd31cec613d1b4341e24eb527845.tar.gz
llvm-33f01f9848bacd31cec613d1b4341e24eb527845.tar.bz2
llvm-33f01f9848bacd31cec613d1b4341e24eb527845.tar.xz
Add stack alignment information for Sparc.
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
-rw-r--r--lib/Target/Sparc/SparcTargetMachine.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Target/Sparc/SparcTargetMachine.cpp b/lib/Target/Sparc/SparcTargetMachine.cpp
index 172bb66b7c..ac26765aec 100644
--- a/lib/Target/Sparc/SparcTargetMachine.cpp
+++ b/lib/Target/Sparc/SparcTargetMachine.cpp
@@ -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;
}