#[target_feature] is allowed on default implementations (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