about summary refs log tree commit diff
path: root/src/librustc_codegen_llvm/declare.rs
diff options
context:
space:
mode:
authorMasaki Hara <ackie.h.gmai@gmail.com>2018-10-06 22:58:36 +0900
committerMasaki Hara <ackie.h.gmai@gmail.com>2018-10-24 21:59:07 +0900
commit06b6b1c79088a2697c38cd1719ebe0ce13e67d0b (patch)
treeaf4b41771b70489a82af87358996e211d50e3f1b /src/librustc_codegen_llvm/declare.rs
parent207531606476a1fa03de815c2a112f3909cda48a (diff)
downloadrust-06b6b1c79088a2697c38cd1719ebe0ce13e67d0b.tar.gz
rust-06b6b1c79088a2697c38cd1719ebe0ce13e67d0b.zip
Make declare_fn accept PolyFnSig instead of Ty.
Diffstat (limited to 'src/librustc_codegen_llvm/declare.rs')
-rw-r--r--src/librustc_codegen_llvm/declare.rs18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/librustc_codegen_llvm/declare.rs b/src/librustc_codegen_llvm/declare.rs
index 0d01e9ef7dd..f4aede55ce1 100644
--- a/src/librustc_codegen_llvm/declare.rs
+++ b/src/librustc_codegen_llvm/declare.rs
@@ -22,7 +22,7 @@
 
 use llvm;
 use llvm::AttributePlace::Function;
-use rustc::ty::{self, Ty};
+use rustc::ty::{self, PolyFnSig};
 use rustc::ty::layout::LayoutOf;
 use rustc::session::config::Sanitizer;
 use rustc_data_structures::small_c_str::SmallCStr;
@@ -30,7 +30,6 @@ use rustc_target::spec::PanicStrategy;
 use abi::{Abi, FnType, FnTypeExt};
 use attributes;
 use context::CodegenCx;
-use common;
 use type_::Type;
 use value::Value;
 
@@ -129,12 +128,9 @@ pub fn declare_cfn(cx: &CodegenCx<'ll, '_>, name: &str, fn_type: &'ll Type) -> &
 pub fn declare_fn(
     cx: &CodegenCx<'ll, 'tcx>,
     name: &str,
-    fn_type: Ty<'tcx>,
-    is_vtable_shim: bool,
+    sig: PolyFnSig<'tcx>,
 ) -> &'ll Value {
-    debug!("declare_rust_fn(name={:?}, fn_type={:?}, is_vtable_shim={:?})",
-           name, fn_type, is_vtable_shim);
-    let sig = common::ty_fn_sig_vtable(cx, fn_type, is_vtable_shim);
+    debug!("declare_rust_fn(name={:?}, sig={:?})", name, sig);
     let sig = cx.tcx.normalize_erasing_late_bound_regions(ty::ParamEnv::reveal_all(), &sig);
     debug!("declare_rust_fn (after region erasure) sig={:?}", sig);
 
@@ -186,12 +182,12 @@ pub fn define_private_global(cx: &CodegenCx<'ll, '_>, ty: &'ll Type) -> &'ll Val
 pub fn define_fn(
     cx: &CodegenCx<'ll, 'tcx>,
     name: &str,
-    fn_type: Ty<'tcx>,
+    fn_sig: PolyFnSig<'tcx>,
 ) -> &'ll Value {
     if get_defined_value(cx, name).is_some() {
         cx.sess().fatal(&format!("symbol `{}` already defined", name))
     } else {
-        declare_fn(cx, name, fn_type, false)
+        declare_fn(cx, name, fn_sig)
     }
 }
 
@@ -203,9 +199,9 @@ pub fn define_fn(
 pub fn define_internal_fn(
     cx: &CodegenCx<'ll, 'tcx>,
     name: &str,
-    fn_type: Ty<'tcx>,
+    fn_sig: PolyFnSig<'tcx>,
 ) -> &'ll Value {
-    let llfn = define_fn(cx, name, fn_type);
+    let llfn = define_fn(cx, name, fn_sig);
     unsafe { llvm::LLVMRustSetLinkage(llfn, llvm::Linkage::InternalLinkage) };
     llfn
 }