summaryrefslogtreecommitdiff
path: root/lib/Target/ARM/ARMSubtarget.h
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-09-27 18:31:37 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-09-27 18:31:37 +0000
commitfd9493d74e5429eab44638cd9badbad9090cd713 (patch)
tree6e0fe475f9133e809c28f0552f4cbec919d35ad5 /lib/Target/ARM/ARMSubtarget.h
parentb814110612024a092fd884050fbab9d012b16dc7 (diff)
downloadllvm-fd9493d74e5429eab44638cd9badbad9090cd713.tar.gz
llvm-fd9493d74e5429eab44638cd9badbad9090cd713.tar.bz2
llvm-fd9493d74e5429eab44638cd9badbad9090cd713.tar.xz
Odd additional stub framework for the ARM MC ELF emission.
llc now recognizes the "intent" to support MC/obj emission for ARM, but given that they are all stubs, it asserts on --filetype=obj --march=arm Patch by Jason Kim. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114856 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMSubtarget.h')
-rw-r--r--lib/Target/ARM/ARMSubtarget.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h
index 34f571fd70..f356a7646a 100644
--- a/lib/Target/ARM/ARMSubtarget.h
+++ b/lib/Target/ARM/ARMSubtarget.h
@@ -204,6 +204,29 @@ protected:
/// GVIsIndirectSymbol - true if the GV will be accessed via an indirect
/// symbol.
bool GVIsIndirectSymbol(const GlobalValue *GV, Reloc::Model RelocM) const;
+
+ /// getDataLayout() - returns the ARM/Thumb specific TargetLayout string
+ std::string getDataLayout() const {
+ if (isThumb()) {
+ if (isAPCS_ABI()) {
+ return std::string("e-p:32:32-f64:32:32-i64:32:32-"
+ "i16:16:32-i8:8:32-i1:8:32-"
+ "v128:32:128-v64:32:64-a:0:32-n32");
+ } else {
+ return std::string("e-p:32:32-f64:64:64-i64:64:64-"
+ "i16:16:32-i8:8:32-i1:8:32-"
+ "v128:64:128-v64:64:64-a:0:32-n32");
+ }
+ } else {
+ if (isAPCS_ABI()) {
+ return std::string("e-p:32:32-f64:32:32-i64:32:32-"
+ "v128:32:128-v64:32:64-n32");
+ } else {
+ return std::string("e-p:32:32-f64:64:64-i64:64:64-"
+ "v128:64:128-v64:64:64-n32");
+ }
+ }
+ };
};
} // End llvm namespace