-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Add DerefOfRawPointer and CallToFunctionWith to THIR unsafeck #85306
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Conversation
f1b4337
to
9ec1eb2
Compare
This comment has been minimized.
This comment has been minimized.
9ec1eb2
to
d7787bb
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r=me modulo the question below
@@ -148,11 +152,28 @@ impl<'a, 'tcx> Visitor<'a, 'tcx> for UnsafetyVisitor<'a, 'tcx> { | |||
ExprKind::Call { fun, ty: _, args: _, from_hir_call: _, fn_span: _ } => { | |||
if self.thir[fun].ty.fn_sig(self.tcx).unsafety() == hir::Unsafety::Unsafe { | |||
self.requires_unsafe(expr.span, CallToUnsafeFunction); | |||
} else if let &ty::FnDef(func_did, _) = self.thir[fun].ty.kind() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
as far as I know, target features 1.1 is not stable #69098 -- is this instability enforced at the declaration site? I guess probably so.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the check is here:
rust/compiler/rustc_typeck/src/collect.rs
Lines 2773 to 2781 in 1773f14
if !tcx.features().target_feature_11 { | |
let mut err = feature_err( | |
&tcx.sess.parse_sess, | |
sym::target_feature_11, | |
attr.span, | |
"`#[target_feature(..)]` can only be applied to `unsafe` functions", | |
); | |
err.span_label(tcx.def_span(id), "not an `unsafe` function"); | |
err.emit(); |
@bors r+ |
📌 Commit d7787bb has been approved by |
…komatsakis Add DerefOfRawPointer and CallToFunctionWith to THIR unsafeck Extends THIR unsafeck to check for two more cases of unsafe operations: dereferences of raw pointers and calls to functions with `#[target_feature]` (RFC 2396). The check for the latter is pretty much copy-pasted from the existing MIR equivalent. This will clash with rust-lang#83842 and rust-lang#85273 which are arguably more important, let's maybe focus on getting those merged first, this can wait. r? `@nikomatsakis` cc rust-lang/project-thir-unsafeck#7
Whoops |
…komatsakis Check for more things in THIR unsafeck Reunion of rust-lang#85306, rust-lang#85381 and rust-lang#85419 with conflicts resolved. r? `@nikomatsakis`
Extends THIR unsafeck to check for two more cases of unsafe operations: dereferences of raw pointers and calls to functions with
#[target_feature]
(RFC 2396). The check for the latter is pretty much copy-pasted from the existing MIR equivalent.This will clash with #83842 and #85273 which are arguably more important, let's maybe focus on getting those merged first, this can wait.
r? @nikomatsakis
cc rust-lang/project-thir-unsafeck#7