diff options
| -rw-r--r-- | src/Makefile | 1 | ||||
| -rw-r--r-- | src/comp/middle/trans.rs | 14 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/Makefile b/src/Makefile index 85867532..544075fa 100644 --- a/src/Makefile +++ b/src/Makefile @@ -507,6 +507,7 @@ TEST_XFAILS_RUSTC := $(filter-out \ linear-for-loop.rs \ multiline-comment.rs \ mutual-recursion-group.rs \ + native2.rs \ obj-drop.rs \ obj-recursion.rs \ obj-with-vec.rs \ diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index 282a62d6..94fa9f91 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -4062,12 +4062,24 @@ fn decl_fn_and_pair(@crate_ctxt cx, cx.fn_pairs.insert(id, gvar); } +fn decl_native_fn_and_pair(@crate_ctxt cx, + str name, + &ast.ann ann, + ast.def_id id) { + + auto llpairty = node_type(cx, ann); + auto llfty = get_pair_fn_ty(llpairty); + + let ValueRef llfn = decl_fastcall_fn(cx.llmod, name, llfty); + cx.item_ids.insert(id, llfn); +} + fn collect_native_item(&@crate_ctxt cx, @ast.native_item i) -> @crate_ctxt { alt (i.node) { case (ast.native_item_fn(?name, _, _, ?fid, ?ann)) { cx.native_items.insert(fid, i); if (! cx.obj_methods.contains_key(fid)) { - decl_fn_and_pair(cx, "fn", name, ann, fid); + decl_native_fn_and_pair(cx, name, ann, fid); } } case (_) { /* fall through */ } |