diff options
author | Petr Hosek <phosek@chromium.org> | 2017-04-04 19:51:53 +0000 |
---|---|---|
committer | Petr Hosek <phosek@chromium.org> | 2017-04-04 19:51:53 +0000 |
commit | 9eb0a1e09b1eeece9c59e8ee6c5164fcd6bbcacb (patch) | |
tree | e15d0b73dafc479fcb2f5918c89eed926e5e5013 /llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp | |
parent | c45b03bddcff957a5353007f11dc520fd0072adc (diff) | |
download | bcm5719-llvm-9eb0a1e09b1eeece9c59e8ee6c5164fcd6bbcacb.tar.gz bcm5719-llvm-9eb0a1e09b1eeece9c59e8ee6c5164fcd6bbcacb.zip |
[AArch64][Fuchsia] Allow -mcmodel=kernel for --target=aarch64-fuchsia
This mode is just like -mcmodel=small except that it moves the
thread pointer from TPIDR_EL0 to TPIDR_EL1.
Patch by Roland McGrath.
Differential Revision: https://reviews.llvm.org/D31624
llvm-svn: 299462
Diffstat (limited to 'llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp')
-rw-r--r-- | llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp index e9d38d3dcf1..f710065d9bc 100644 --- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp +++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp @@ -84,9 +84,14 @@ static void adjustCodeGenOpts(const Triple &TT, Reloc::Model RM, // no matter how far away they are. else if (CM == CodeModel::JITDefault) CM = CodeModel::Large; - else if (CM != CodeModel::Small && CM != CodeModel::Large) - report_fatal_error( - "Only small and large code models are allowed on AArch64"); + else if (CM != CodeModel::Small && CM != CodeModel::Large) { + if (!TT.isOSFuchsia()) + report_fatal_error( + "Only small and large code models are allowed on AArch64"); + else if (CM != CodeModel::Kernel) + report_fatal_error( + "Only small, kernel, and large code models are allowed on AArch64"); + } } static MCInstPrinter *createAArch64MCInstPrinter(const Triple &T, |