Skip to content

Commit 5a1206a

Browse files
committed
An attempt at fixing the tests for LLVM 3.x-series.
1 parent 4595430 commit 5a1206a

File tree

1 file changed

+52
-12
lines changed

1 file changed

+52
-12
lines changed

tests/all/test_object_file.rs

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,56 @@
11
extern crate inkwell;
22

33
use self::inkwell::context::Context;
4+
use self::inkwell::module::Module;
45
use self::inkwell::targets::{
56
CodeModel, FileType, InitializationConfig, RelocMode, Target, TargetMachine,
67
};
8+
use self::inkwell::types::IntType;
79
use self::inkwell::values::BasicValue;
810
use self::inkwell::OptimizationLevel;
911

12+
#[llvm_versions(4.0..=latest)]
13+
fn get_host_cpu_name() -> String {
14+
TargetMachine::get_host_cpu_name().to_string()
15+
}
16+
#[llvm_versions(4.0..=latest)]
17+
fn get_host_cpu_features() -> String {
18+
TargetMachine::get_host_cpu_features().to_string()
19+
}
20+
#[llvm_versions(4.0..=latest)]
21+
fn ptr_sized_int_type<'ctx>(
22+
target_machine: &TargetMachine,
23+
context: &'ctx Context,
24+
) -> IntType<'ctx> {
25+
let target_data = target_machine.get_target_data();
26+
target_data.ptr_sized_int_type_in_context(&context, None)
27+
}
28+
#[llvm_versions(4.0..=latest)]
29+
fn apply_target_to_module<'ctx>(target_machine: &TargetMachine, module: &Module) {
30+
module.set_triple(&target_machine.get_triple());
31+
module.set_data_layout(&target_machine.get_target_data().get_data_layout());
32+
}
33+
34+
#[llvm_versions(3.6..4.0)]
35+
fn get_host_cpu_name() -> String {
36+
""
37+
}
38+
#[llvm_versions(3.6..4.0)]
39+
fn get_host_cpu_features() -> String {
40+
""
41+
}
42+
#[llvm_versions(3.6..4.0)]
43+
fn ptr_sized_int_type<'ctx>(
44+
_target_machine: &TargetMachine,
45+
context: &'ctx Context,
46+
) -> IntType<'ctx> {
47+
context.i64_type()
48+
}
49+
#[llvm_versions(3.6..4.0)]
50+
fn apply_target_to_module(target_machine: &TargetMachine, module: &Module) {
51+
module.set_triple(&target_machine.get_triple());
52+
}
53+
1054
fn get_native_target_machine() -> TargetMachine {
1155
Target::initialize_native(&InitializationConfig::default())
1256
.expect("Failed to initialize native target");
@@ -15,11 +59,11 @@ fn get_native_target_machine() -> TargetMachine {
1559
target
1660
.create_target_machine(
1761
&target_triple,
18-
&TargetMachine::get_host_cpu_name().to_string(),
19-
&TargetMachine::get_host_cpu_features().to_string(),
62+
&get_host_cpu_name(),
63+
&get_host_cpu_features(),
2064
OptimizationLevel::None,
21-
RelocMode::Static,
22-
CodeModel::Small,
65+
RelocMode::Default,
66+
CodeModel::Default,
2367
)
2468
.unwrap()
2569
}
@@ -43,8 +87,7 @@ fn test_section_iterator() {
4387
gv_c.set_initializer(&context.i32_type().const_zero().as_basic_value_enum());
4488
gv_c.set_section("C");
4589

46-
module.set_triple(&target_machine.get_triple());
47-
module.set_data_layout(&target_machine.get_target_data().get_data_layout());
90+
apply_target_to_module(&target_machine, &module);
4891

4992
let memory_buffer = target_machine
5093
.write_to_memory_buffer(&mut module, FileType::Object)
@@ -96,8 +139,7 @@ fn test_symbol_iterator() {
96139
module
97140
.add_global(context.i32_type(), None, "c")
98141
.set_initializer(&context.i32_type().const_zero().as_basic_value_enum());
99-
module.set_triple(&target_machine.get_triple());
100-
module.set_data_layout(&target_machine.get_target_data().get_data_layout());
142+
apply_target_to_module(&target_machine, &module);
101143

102144
let memory_buffer = target_machine
103145
.write_to_memory_buffer(&mut module, FileType::Object)
@@ -139,8 +181,7 @@ fn test_reloc_iterator() {
139181
let target_machine = get_native_target_machine();
140182

141183
let context = Context::create();
142-
let target_data = target_machine.get_target_data();
143-
let intptr_t = target_data.ptr_sized_int_type_in_context(&context, None);
184+
let intptr_t = ptr_sized_int_type(&target_machine, &context);
144185

145186
let mut module = context.create_module("test_reloc_iterator");
146187
let x_ptr = module
@@ -153,8 +194,7 @@ fn test_reloc_iterator() {
153194
.add_global(intptr_t, None, "a")
154195
.set_initializer(&x_plus_4);
155196

156-
module.set_triple(&target_machine.get_triple());
157-
module.set_data_layout(&target_machine.get_target_data().get_data_layout());
197+
apply_target_to_module(&target_machine, &module);
158198

159199
let memory_buffer = target_machine
160200
.write_to_memory_buffer(&mut module, FileType::Object)

0 commit comments

Comments
 (0)