mirror of https://github.com/microsoft/clang.git
[AArch64] Add Tiny Code Model for AArch64
Adds a tiny code model to Clang along side rL340397. Differential Revision: https://reviews.llvm.org/D49674 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@340398 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ff09bf0a1c
commit
58b109b02d
|
@ -249,7 +249,7 @@ def new_struct_path_tbaa : Flag<["-"], "new-struct-path-tbaa">,
|
|||
def masm_verbose : Flag<["-"], "masm-verbose">,
|
||||
HelpText<"Generate verbose assembly output">;
|
||||
def mcode_model : Separate<["-"], "mcode-model">,
|
||||
HelpText<"The code model to use">, Values<"small,kernel,medium,large">;
|
||||
HelpText<"The code model to use">, Values<"tiny,small,kernel,medium,large">;
|
||||
def mdebug_pass : Separate<["-"], "mdebug-pass">,
|
||||
HelpText<"Enable additional debug output">;
|
||||
def mdisable_fp_elim : Flag<["-"], "mdisable-fp-elim">,
|
||||
|
|
|
@ -368,6 +368,7 @@ static CodeGenOpt::Level getCGOptLevel(const CodeGenOptions &CodeGenOpts) {
|
|||
static Optional<llvm::CodeModel::Model>
|
||||
getCodeModel(const CodeGenOptions &CodeGenOpts) {
|
||||
unsigned CodeModel = llvm::StringSwitch<unsigned>(CodeGenOpts.CodeModel)
|
||||
.Case("tiny", llvm::CodeModel::Tiny)
|
||||
.Case("small", llvm::CodeModel::Small)
|
||||
.Case("kernel", llvm::CodeModel::Kernel)
|
||||
.Case("medium", llvm::CodeModel::Medium)
|
||||
|
|
|
@ -370,7 +370,7 @@ static StringRef getCodeModel(ArgList &Args, DiagnosticsEngine &Diags) {
|
|||
if (Arg *A = Args.getLastArg(OPT_mcode_model)) {
|
||||
StringRef Value = A->getValue();
|
||||
if (Value == "small" || Value == "kernel" || Value == "medium" ||
|
||||
Value == "large")
|
||||
Value == "large" || Value == "tiny")
|
||||
return Value;
|
||||
Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) << Value;
|
||||
}
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
// RUN: %clang -### -c -mcmodel=tiny %s 2>&1 | FileCheck -check-prefix CHECK-TINY %s
|
||||
// RUN: %clang -### -c -mcmodel=small %s 2>&1 | FileCheck -check-prefix CHECK-SMALL %s
|
||||
// RUN: %clang -### -S -mcmodel=kernel %s 2>&1 | FileCheck -check-prefix CHECK-KERNEL %s
|
||||
// RUN: %clang -### -c -mcmodel=medium %s 2>&1 | FileCheck -check-prefix CHECK-MEDIUM %s
|
||||
// RUN: %clang -### -S -mcmodel=large %s 2>&1 | FileCheck -check-prefix CHECK-LARGE %s
|
||||
// RUN: not %clang -c -mcmodel=lager %s 2>&1 | FileCheck -check-prefix CHECK-INVALID %s
|
||||
|
||||
// CHECK-TINY: "-mcode-model" "tiny"
|
||||
// CHECK-SMALL: "-mcode-model" "small"
|
||||
// CHECK-KERNEL: "-mcode-model" "kernel"
|
||||
// CHECK-MEDIUM: "-mcode-model" "medium"
|
||||
|
|
Loading…
Reference in New Issue