summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/codemodels.c
diff options
context:
space:
mode:
authorCaroline Tice <cmtice@google.com>2018-09-21 18:34:59 +0000
committerCaroline Tice <cmtice@google.com>2018-09-21 18:34:59 +0000
commit62279730e2e2f22f24ee81896b8986c24e7fcd2e (patch)
treede2d2dde64b561bc3a80d9fd874f9abd49ca7a6a /clang/test/CodeGen/codemodels.c
parentc4bc88b541e98ccdb1257ce4999bdf57b135846a (diff)
downloadbcm5719-llvm-62279730e2e2f22f24ee81896b8986c24e7fcd2e.tar.gz
bcm5719-llvm-62279730e2e2f22f24ee81896b8986c24e7fcd2e.zip
Add necessary support for storing code-model to module IR.
Currently the code-model does not get saved in the module IR, so if a code model is specified when compiling with LTO, it gets lost and is not propagated properly to LTO. This patch does what is necessary in the front end to pass the code-model to the module, so that the back end can store it in the Module . Differential Revision: https://reviews.llvm.org/D52323 llvm-svn: 342758
Diffstat (limited to 'clang/test/CodeGen/codemodels.c')
-rw-r--r--clang/test/CodeGen/codemodels.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/test/CodeGen/codemodels.c b/clang/test/CodeGen/codemodels.c
new file mode 100644
index 00000000000..f85c7a0ff88
--- /dev/null
+++ b/clang/test/CodeGen/codemodels.c
@@ -0,0 +1,18 @@
+// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s -check-prefix=CHECK-NOMODEL
+// RUN: %clang_cc1 -emit-llvm -mcode-model tiny %s -o - | FileCheck %s -check-prefix=CHECK-TINY
+// RUN: %clang_cc1 -emit-llvm -mcode-model small %s -o - | FileCheck %s -check-prefix=CHECK-SMALL
+// RUN: %clang_cc1 -emit-llvm -mcode-model kernel %s -o - | FileCheck %s -check-prefix=CHECK-KERNEL
+// RUN: %clang_cc1 -emit-llvm -mcode-model medium %s -o - | FileCheck %s -check-prefix=CHECK-MEDIUM
+// RUN: %clang_cc1 -emit-llvm -mcode-model large %s -o - | FileCheck %s -check-prefix=CHECK-LARGE
+
+// CHECK-TINY: !llvm.module.flags = !{{{.*}}}
+// CHECK-TINY: !{{[0-9]+}} = !{i32 1, !"Code Model", i32 0}
+// CHECK-SMALL: !llvm.module.flags = !{{{.*}}}
+// CHECK-SMALL: !{{[0-9]+}} = !{i32 1, !"Code Model", i32 1}
+// CHECK-KERNEL: !llvm.module.flags = !{{{.*}}}
+// CHECK-KERNEL: !{{[0-9]+}} = !{i32 1, !"Code Model", i32 2}
+// CHECK-MEDIUM: !llvm.module.flags = !{{{.*}}}
+// CHECK-MEDIUM: !{{[0-9]+}} = !{i32 1, !"Code Model", i32 3}
+// CHECK-LARGE: !llvm.module.flags = !{{{.*}}}
+// CHECK-LARGE: !{{[0-9]+}} = !{i32 1, !"Code Model", i32 4}
+// CHECK-NOMODEL-NOT: Code Model
OpenPOWER on IntegriCloud