diff options
| author | Denis Merigoux <denis.merigoux@gmail.com> | 2018-09-05 14:14:03 -0700 |
|---|---|---|
| committer | Eduard-Mihai Burtescu <edy.burt@gmail.com> | 2018-11-16 14:11:59 +0200 |
| commit | 730b13ab51b0885cb8a750036e9429e6c2a193f1 (patch) | |
| tree | a80c3c3a5e8c51ef6c6d5c7fa9d750b17221339c /src/librustc_codegen_llvm/context.rs | |
| parent | 5f28e0a0b627c2e20689906db8475e2e7d133672 (diff) | |
| download | rust-730b13ab51b0885cb8a750036e9429e6c2a193f1.tar.gz rust-730b13ab51b0885cb8a750036e9429e6c2a193f1.zip | |
Traitification of type_ methods
The methods are now attached to CodegenCx instead of Type
Diffstat (limited to 'src/librustc_codegen_llvm/context.rs')
| -rw-r--r-- | src/librustc_codegen_llvm/context.rs | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/src/librustc_codegen_llvm/context.rs b/src/librustc_codegen_llvm/context.rs index a3c88d35a81..e19143efa98 100644 --- a/src/librustc_codegen_llvm/context.rs +++ b/src/librustc_codegen_llvm/context.rs @@ -23,6 +23,7 @@ use value::Value; use monomorphize::partitioning::CodegenUnit; use type_::Type; use type_of::PointeeInfo; +use interfaces::TypeMethods; use rustc_data_structures::base_n; use rustc_data_structures::small_c_str::SmallCStr; @@ -379,7 +380,7 @@ impl<'b, 'tcx> CodegenCx<'b, 'tcx> { } else { "rust_eh_personality" }; - let fty = Type::variadic_func(&[], Type::i32(self)); + let fty = &self.variadic_func(&[], &self.i32()); declare::declare_cfn(self, name, fty) } }; @@ -487,7 +488,7 @@ fn declare_intrinsic( macro_rules! ifn { ($name:expr, fn() -> $ret:expr) => ( if key == $name { - let f = declare::declare_cfn(cx, $name, Type::func(&[], $ret)); + let f = declare::declare_cfn(cx, $name, cx.func(&[], $ret)); llvm::SetUnnamedAddr(f, false); cx.intrinsics.borrow_mut().insert($name, f.clone()); return Some(f); @@ -495,7 +496,7 @@ fn declare_intrinsic( ); ($name:expr, fn(...) -> $ret:expr) => ( if key == $name { - let f = declare::declare_cfn(cx, $name, Type::variadic_func(&[], $ret)); + let f = declare::declare_cfn(cx, $name, cx.variadic_func(&[], $ret)); llvm::SetUnnamedAddr(f, false); cx.intrinsics.borrow_mut().insert($name, f.clone()); return Some(f); @@ -503,7 +504,7 @@ fn declare_intrinsic( ); ($name:expr, fn($($arg:expr),*) -> $ret:expr) => ( if key == $name { - let f = declare::declare_cfn(cx, $name, Type::func(&[$($arg),*], $ret)); + let f = declare::declare_cfn(cx, $name, cx.func(&[$($arg),*], $ret)); llvm::SetUnnamedAddr(f, false); cx.intrinsics.borrow_mut().insert($name, f.clone()); return Some(f); @@ -511,28 +512,28 @@ fn declare_intrinsic( ); } macro_rules! mk_struct { - ($($field_ty:expr),*) => (Type::struct_(cx, &[$($field_ty),*], false)) + ($($field_ty:expr),*) => (cx.struct_( &[$($field_ty),*], false)) } - let i8p = Type::i8p(cx); - let void = Type::void(cx); - let i1 = Type::i1(cx); - let t_i8 = Type::i8(cx); - let t_i16 = Type::i16(cx); - let t_i32 = Type::i32(cx); - let t_i64 = Type::i64(cx); - let t_i128 = Type::i128(cx); - let t_f32 = Type::f32(cx); - let t_f64 = Type::f64(cx); - - let t_v2f32 = Type::vector(t_f32, 2); - let t_v4f32 = Type::vector(t_f32, 4); - let t_v8f32 = Type::vector(t_f32, 8); - let t_v16f32 = Type::vector(t_f32, 16); - - let t_v2f64 = Type::vector(t_f64, 2); - let t_v4f64 = Type::vector(t_f64, 4); - let t_v8f64 = Type::vector(t_f64, 8); + let i8p = cx.i8p(); + let void = cx.void(); + let i1 = cx.i1(); + let t_i8 = cx.i8(); + let t_i16 = cx.i16(); + let t_i32 = cx.i32(); + let t_i64 = cx.i64(); + let t_i128 = cx.i128(); + let t_f32 = cx.f32(); + let t_f64 = cx.f64(); + + let t_v2f32 = cx.vector(t_f32, 2); + let t_v4f32 = cx.vector(t_f32, 4); + let t_v8f32 = cx.vector(t_f32, 8); + let t_v16f32 = cx.vector(t_f32, 16); + + let t_v2f64 = cx.vector(t_f64, 2); + let t_v4f64 = cx.vector(t_f64, 4); + let t_v8f64 = cx.vector(t_f64, 8); ifn!("llvm.memset.p0i8.i16", fn(i8p, t_i8, t_i16, t_i32, i1) -> void); ifn!("llvm.memset.p0i8.i32", fn(i8p, t_i8, t_i32, t_i32, i1) -> void); @@ -785,8 +786,8 @@ fn declare_intrinsic( ifn!("llvm.prefetch", fn(i8p, t_i32, t_i32, t_i32) -> void); if cx.sess().opts.debuginfo != DebugInfo::None { - ifn!("llvm.dbg.declare", fn(Type::metadata(cx), Type::metadata(cx)) -> void); - ifn!("llvm.dbg.value", fn(Type::metadata(cx), t_i64, Type::metadata(cx)) -> void); + ifn!("llvm.dbg.declare", fn(cx.metadata(), cx.metadata()) -> void); + ifn!("llvm.dbg.value", fn(cx.metadata(), t_i64, cx.metadata()) -> void); } None |
