Closed
Description
The compiler currently allows safe default method implementations to be marked with #[target_feature]
:
trait Foo {
#[target_feature(enable = "avx2")] // no error
fn foo() {}
}
which I don't think is allowed in RFC 2396. For reference, #[target_feature]
is not allowed on trait implementations:
struct Bar;
impl Foo for Bar {
#[target_feature(enable = "avx2")] // error: cannot be applied to safe trait method
fn foo() {}
}
From my limited testing, this doesn't seem to be unsound however, as the compiler seems to consider all implementations of Foo::foo
as having #[target_feature(enable = "avx2")]
.
cc #69098
@rustbot label T-lang T-compiler C-bug F-target_feature_11