#[target_feature] is allowed on default implementations · Issue #108646 · rust-lang/rust (original) (raw)

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