diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2015-01-07 14:06:04 -0500 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2015-01-07 14:07:58 -0500 |
| commit | 448ddad87768a8ecef4dc8fc1394fdebbc487f85 (patch) | |
| tree | 7518cbd1e2b5432a301a01ea1d041b1371a625ec /src | |
| parent | aec62af7427083ac7f6dcb2fd484876199147fdc (diff) | |
| download | rust-448ddad87768a8ecef4dc8fc1394fdebbc487f85.tar.gz rust-448ddad87768a8ecef4dc8fc1394fdebbc487f85.zip | |
Better debug output in `decl_rust_fn`. The lack of output here has
caused me quite a bit of hair-pulling.
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_trans/trans/base.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/librustc_trans/trans/base.rs b/src/librustc_trans/trans/base.rs index 057d0f378e6..ceceabb80f5 100644 --- a/src/librustc_trans/trans/base.rs +++ b/src/librustc_trans/trans/base.rs @@ -281,8 +281,15 @@ pub fn kind_for_unboxed_closure(ccx: &CrateContext, closure_id: ast::DefId) pub fn decl_rust_fn<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>, fn_ty: Ty<'tcx>, name: &str) -> ValueRef { + debug!("decl_rust_fn(fn_ty={}, name={:?})", + fn_ty.repr(ccx.tcx()), + name); + let fn_ty = monomorphize::normalize_associated_type(ccx.tcx(), &fn_ty); + debug!("decl_rust_fn: fn_ty={} (after normalized associated types)", + fn_ty.repr(ccx.tcx())); + let function_type; // placeholder so that the memory ownership works out ok let (sig, abi, env) = match fn_ty.sty { @@ -305,10 +312,12 @@ pub fn decl_rust_fn<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>, let sig = ty::erase_late_bound_regions(ccx.tcx(), sig); let sig = ty::Binder(sig); + debug!("decl_rust_fn: sig={} (after erasing regions)", + sig.repr(ccx.tcx())); + let llfty = type_of_rust_fn(ccx, env, &sig, abi); - debug!("decl_rust_fn(sig={}, type={})", - sig.repr(ccx.tcx()), + debug!("decl_rust_fn: llfty={}", ccx.tn().type_to_string(llfty)); let llfn = decl_fn(ccx, name, llvm::CCallConv, llfty, sig.0.output /* (1) */); |
