diff options
| author | bors <bors@rust-lang.org> | 2016-12-03 17:41:14 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2016-12-03 17:41:14 +0000 |
| commit | 2cdbd5eb4255974db204819f9aa49c00b15a6d23 (patch) | |
| tree | 700af30689a3fd50162761b8c5c2f9eff8c35808 /src/libsyntax | |
| parent | 890085450a495678622178a471afd630fe15f0f5 (diff) | |
| parent | 80ef1dbf2d51d2f2fd039d98a9150d2614e775b0 (diff) | |
| download | rust-2cdbd5eb4255974db204819f9aa49c00b15a6d23.tar.gz rust-2cdbd5eb4255974db204819f9aa49c00b15a6d23.zip | |
Auto merge of #38079 - BurntSushi:attrtarget, r=alexcrichton
Add new #[target_feature = "..."] attribute.
This commit adds a new attribute that instructs the compiler to emit
target specific code for a single function. For example, the following
function is permitted to use instructions that are part of SSE 4.2:
#[target_feature = "+sse4.2"]
fn foo() { ... }
In particular, use of this attribute does not require setting the
-C target-feature or -C target-cpu options on rustc.
This attribute does not have any protections built into it. For example,
nothing stops one from calling the above `foo` function on hosts without
SSE 4.2 support. Doing so may result in a SIGILL.
I've also expanded the x86 target feature whitelist.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/feature_gate.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 2a745e979a7..1b2c2869cb8 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -316,6 +316,9 @@ declare_features! ( // Allows `break {expr}` with a value inside `loop`s. (active, loop_break_value, "1.14.0", Some(37339)), + + // Allows #[target_feature(...)] + (active, target_feature, "1.15.0", None), ); declare_features! ( @@ -664,6 +667,10 @@ pub const BUILTIN_ATTRIBUTES: &'static [(&'static str, AttributeType, AttributeG "the `#[naked]` attribute \ is an experimental feature", cfg_fn!(naked_functions))), + ("target_feature", Whitelisted, Gated( + Stability::Unstable, "target_feature", + "the `#[target_feature]` attribute is an experimental feature", + cfg_fn!(target_feature))), ("export_name", Whitelisted, Ungated), ("inline", Whitelisted, Ungated), ("link", Whitelisted, Ungated), |
