Skip to content

Commit 6ad0346

Browse files
committed
librustc: Restrict transmute intrinsicck to just rust-intrinsic fn's.
1 parent 5fb2dfa commit 6ad0346

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/librustc/middle/intrinsicck.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -73,21 +73,25 @@ struct IntrinsicCheckingVisitor<'a> {
7373

7474
impl<'a> IntrinsicCheckingVisitor<'a> {
7575
fn def_id_is_transmute(&self, def_id: DefId) -> bool {
76+
let intrinsic = match ty::get(ty::lookup_item_type(self.tcx, def_id).ty).sty {
77+
ty::ty_bare_fn(ref bfty) => bfty.abi == RustIntrinsic,
78+
_ => return false
79+
};
7680
if def_id.krate == ast::LOCAL_CRATE {
7781
match self.tcx.map.get(def_id.node) {
78-
NodeForeignItem(ref item) => {
82+
NodeForeignItem(ref item) if intrinsic => {
7983
token::get_ident(item.ident) ==
8084
token::intern_and_get_ident("transmute")
8185
}
8286
_ => false,
8387
}
8488
} else {
8589
match csearch::get_item_path(self.tcx, def_id).last() {
86-
None => false,
87-
Some(ref last) => {
90+
Some(ref last) if intrinsic => {
8891
token::get_name(last.name()) ==
8992
token::intern_and_get_ident("transmute")
9093
}
94+
_ => false,
9195
}
9296
}
9397
}

0 commit comments

Comments
 (0)