about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbjorn3 <bjorn3@users.noreply.github.com>2018-11-27 18:35:35 +0100
committerbjorn3 <bjorn3@users.noreply.github.com>2018-11-29 18:19:44 +0100
commite45733048eb06da0976e736bb44fe906495d65e9 (patch)
treeaffd0c665e272f667ed02ffbbfd81b5bb12bb881
parentf47505e86740223e0cd3516683fa2a4013cf89aa (diff)
downloadrust-e45733048eb06da0976e736bb44fe906495d65e9.tar.gz
rust-e45733048eb06da0976e736bb44fe906495d65e9.zip
Require Deref to CodegenCx for HasCodegen
-rw-r--r--src/librustc_codegen_llvm/builder.rs9
-rw-r--r--src/librustc_codegen_ssa/traits/mod.rs4
2 files changed, 11 insertions, 2 deletions
diff --git a/src/librustc_codegen_llvm/builder.rs b/src/librustc_codegen_llvm/builder.rs
index 06e52fbe76c..907a5db143a 100644
--- a/src/librustc_codegen_llvm/builder.rs
+++ b/src/librustc_codegen_llvm/builder.rs
@@ -29,7 +29,7 @@ use rustc_codegen_ssa::mir::operand::{OperandValue, OperandRef};
 use rustc_codegen_ssa::mir::place::PlaceRef;
 use std::borrow::Cow;
 use std::ffi::CStr;
-use std::ops::Range;
+use std::ops::{Deref, Range};
 use std::ptr;
 
 // All Builders must have an llfn associated with them
@@ -84,6 +84,13 @@ impl ty::layout::LayoutOf for Builder<'_, '_, 'tcx> {
     }
 }
 
+impl Deref for Builder<'_, 'll, 'tcx> {
+    type Target = CodegenCx<'ll, 'tcx>;
+
+    fn deref(&self) -> &Self::Target {
+        self.cx
+    }
+}
 
 impl HasCodegen<'tcx> for Builder<'_, 'll, 'tcx> {
     type CodegenCx = CodegenCx<'ll, 'tcx>;
diff --git a/src/librustc_codegen_ssa/traits/mod.rs b/src/librustc_codegen_ssa/traits/mod.rs
index 83ce28b6f8a..5cf48be6cf5 100644
--- a/src/librustc_codegen_ssa/traits/mod.rs
+++ b/src/librustc_codegen_ssa/traits/mod.rs
@@ -85,7 +85,9 @@ impl<'tcx, T> CodegenMethods<'tcx> for T where
 {
 }
 
-pub trait HasCodegen<'tcx>: Backend<'tcx> {
+pub trait HasCodegen<'tcx>:
+    Backend<'tcx> + ::std::ops::Deref<Target = <Self as HasCodegen<'tcx>>::CodegenCx>
+{
     type CodegenCx: CodegenMethods<'tcx>
         + BackendTypes<
             Value = Self::Value,