about summary refs log tree commit diff
path: root/src/librustc_codegen_llvm/context.rs
diff options
context:
space:
mode:
authorDenis Merigoux <denis.merigoux@gmail.com>2018-09-05 14:14:03 -0700
committerEduard-Mihai Burtescu <edy.burt@gmail.com>2018-11-16 14:11:59 +0200
commit730b13ab51b0885cb8a750036e9429e6c2a193f1 (patch)
treea80c3c3a5e8c51ef6c6d5c7fa9d750b17221339c /src/librustc_codegen_llvm/context.rs
parent5f28e0a0b627c2e20689906db8475e2e7d133672 (diff)
downloadrust-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.rs53
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