From 8357e573466d583991edd28e52433417b49dc4ae Mon Sep 17 00:00:00 2001 From: Hiroki Noda Date: Fri, 12 Mar 2021 08:35:13 +0900 Subject: Add support for storing code model to LLVM module IR This patch avoids undefined behavior by linking different object files. Also this would it could be propagated properly to LTO. See https://reviews.llvm.org/D52322 and https://reviews.llvm.org/D52323. This patch is based on https://github.com/rust-lang/rust/pull/74002 --- src/test/codegen/codemodels.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/test/codegen/codemodels.rs (limited to 'src/test/codegen') diff --git a/src/test/codegen/codemodels.rs b/src/test/codegen/codemodels.rs new file mode 100644 index 00000000000..6e6dd56ba27 --- /dev/null +++ b/src/test/codegen/codemodels.rs @@ -0,0 +1,18 @@ +// revisions: NOMODEL MODEL-SMALL MODEL-KERNEL MODEL-MEDIUM MODEL-LARGE +//[NOMODEL] compile-flags: +//[MODEL-SMALL] compile-flags: -C code-model=small +//[MODEL-KERNEL] compile-flags: --target x86_64-unknown-linux-gnu -C code-model=kernel +//[MODEL-MEDIUM] compile-flags: -C code-model=medium +//[MODEL-LARGE] compile-flags: -C code-model=large + +#![crate_type = "lib"] + +// MODEL-SMALL: !llvm.module.flags = !{{{.*}}} +// MODEL-SMALL: !{{[0-9]+}} = !{i32 1, !"Code Model", i32 1} +// MODEL-KERNEL: !llvm.module.flags = !{{{.*}}} +// MODEL-KERNEL: !{{[0-9]+}} = !{i32 1, !"Code Model", i32 2} +// MODEL-MEDIUM: !llvm.module.flags = !{{{.*}}} +// MODEL-MEDIUM: !{{[0-9]+}} = !{i32 1, !"Code Model", i32 3} +// MODEL-LARGE: !llvm.module.flags = !{{{.*}}} +// MODEL-LARGE: !{{[0-9]+}} = !{i32 1, !"Code Model", i32 4} +// NOMODEL-NOT: Code Model -- cgit 1.4.1-3-g733a5 From 71418384d7d37b37eef250291ea8015667a81f17 Mon Sep 17 00:00:00 2001 From: Hiroki Noda Date: Fri, 12 Mar 2021 19:46:17 +0900 Subject: Use only x86_64 flag --- src/test/codegen/codemodels.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/test/codegen') diff --git a/src/test/codegen/codemodels.rs b/src/test/codegen/codemodels.rs index 6e6dd56ba27..2328f5feb4e 100644 --- a/src/test/codegen/codemodels.rs +++ b/src/test/codegen/codemodels.rs @@ -1,7 +1,9 @@ +// only-x86_64 + // revisions: NOMODEL MODEL-SMALL MODEL-KERNEL MODEL-MEDIUM MODEL-LARGE //[NOMODEL] compile-flags: //[MODEL-SMALL] compile-flags: -C code-model=small -//[MODEL-KERNEL] compile-flags: --target x86_64-unknown-linux-gnu -C code-model=kernel +//[MODEL-KERNEL] compile-flags: -C code-model=kernel //[MODEL-MEDIUM] compile-flags: -C code-model=medium //[MODEL-LARGE] compile-flags: -C code-model=large -- cgit 1.4.1-3-g733a5