}
}
ty::TyBareFn(_, ref barefnty) => {
- subroutine_type_metadata(cx, unique_type_id, &barefnty.sig, usage_site_span)
+ let fn_metadata = subroutine_type_metadata(cx,
+ unique_type_id,
+ &barefnty.sig,
+ usage_site_span).metadata;
+ match debug_context(cx).type_map
+ .borrow()
+ .find_metadata_for_unique_id(unique_type_id) {
+ Some(metadata) => return metadata,
+ None => { /* proceed normally */ }
+ };
+
+ // This is actually a function pointer, so wrap it in pointer DI
+ MetadataCreationResult::new(pointer_type_metadata(cx, t, fn_metadata), false)
+
}
ty::TyClosure(def_id, substs) => {
let infcx = infer::normalizing_infer_ctxt(cx.tcx(), &cx.tcx().tables);
// gdb-check:type = f32
// gdb-command:whatis f64
// gdb-check:type = f64
+// gdb-command:whatis fnptr
+// gdb-check:type = void (*)(void)
// gdb-command:info functions _yyy
// gdb-check:[...]![...]_yyy([...]);
// gdb-command:continue
let u64: u64 = 64;
let f32: f32 = 2.5;
let f64: f64 = 3.5;
+ let fnptr : fn() = _zzz;
_zzz(); // #break
if 1 == 1 { _yyy(); }
}