Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove the no_debug feature #69667

Merged
merged 3 commits into from
Mar 8, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions src/librustc/middle/codegen_fn_attrs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,6 @@ bitflags! {
/// "weird symbol" for the standard library in that it has slightly
/// different linkage, visibility, and reachability rules.
const RUSTC_STD_INTERNAL_SYMBOL = 1 << 6;
/// `#[no_debug]`: an indicator that no debugging information should be
/// generated for this function by LLVM.
const NO_DEBUG = 1 << 7;
/// `#[thread_local]`: indicates a static is actually a thread local
/// piece of memory
const THREAD_LOCAL = 1 << 8;
Expand Down
4 changes: 0 additions & 4 deletions src/librustc_codegen_llvm/debuginfo/metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2269,10 +2269,6 @@ pub fn create_global_var_metadata(cx: &CodegenCx<'ll, '_>, def_id: DefId, global
let tcx = cx.tcx;
let attrs = tcx.codegen_fn_attrs(def_id);

if attrs.flags.contains(CodegenFnAttrFlags::NO_DEBUG) {
return;
}

let no_mangle = attrs.flags.contains(CodegenFnAttrFlags::NO_MANGLE);
// We may want to remove the namespace scope if we're in an extern block (see
// https://github.com/rust-lang/rust/pull/46457#issuecomment-351750952).
Expand Down
9 changes: 1 addition & 8 deletions src/librustc_codegen_llvm/debuginfo/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ use crate::llvm;
use crate::llvm::debuginfo::{
DIArray, DIBuilder, DIFile, DIFlags, DILexicalBlock, DISPFlags, DIScope, DIType, DIVariable,
};
use rustc::middle::codegen_fn_attrs::CodegenFnAttrFlags;
use rustc::ty::subst::{GenericArgKind, SubstsRef};
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, LOCAL_CRATE};

Expand All @@ -22,7 +21,7 @@ use crate::common::CodegenCx;
use crate::value::Value;
use rustc::mir;
use rustc::session::config::{self, DebugInfo};
use rustc::ty::{self, Instance, InstanceDef, ParamEnv, Ty};
use rustc::ty::{self, Instance, ParamEnv, Ty};
use rustc_codegen_ssa::debuginfo::type_names;
use rustc_codegen_ssa::mir::debuginfo::{DebugScope, FunctionDebugContext, VariableKind};
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
Expand Down Expand Up @@ -241,12 +240,6 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> {
return None;
}

if let InstanceDef::Item(def_id) = instance.def {
if self.tcx().codegen_fn_attrs(def_id).flags.contains(CodegenFnAttrFlags::NO_DEBUG) {
return None;
}
}

let span = mir.span;

// This can be the case for functions inlined from another crate
Expand Down
3 changes: 0 additions & 3 deletions src/librustc_feature/active.rs
Original file line number Diff line number Diff line change
Expand Up @@ -289,9 +289,6 @@ declare_features! (
/// Permits specifying whether a function should permit unwinding or abort on unwind.
(active, unwind_attributes, "1.4.0", Some(58760), None),

/// Allows `#[no_debug]`.
(active, no_debug, "1.5.0", Some(29721), None),

/// Allows attributes on expressions and non-item statements.
(active, stmt_expr_attributes, "1.6.0", Some(15701), None),

Expand Down
10 changes: 0 additions & 10 deletions src/librustc_feature/builtin_attrs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -503,16 +503,6 @@ pub const BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[
cfg_fn!(rustc_attrs),
),
),
(
sym::no_debug, Whitelisted, template!(Word),
Gated(
Stability::Deprecated("https://github.com/rust-lang/rust/issues/29721", None),
sym::no_debug,
"the `#[no_debug]` attribute was an experimental feature that has been \
deprecated due to lack of demand",
cfg_fn!(no_debug)
)
),
gated!(
// Used in resolve:
prelude_import, Whitelisted, template!(Word),
Expand Down
2 changes: 2 additions & 0 deletions src/librustc_feature/removed.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ declare_features! (
/// Allows overlapping impls of marker traits.
(removed, overlapping_marker_traits, "1.42.0", Some(29864), None,
Some("removed in favor of `#![feature(marker_trait_attr)]`")),
/// Allows `#[no_debug]`.
(removed, no_debug, "1.43.0", Some(29721), None, Some("removed due to lack of demand")),
// -------------------------------------------------------------------------
// feature-group-end: removed features
// -------------------------------------------------------------------------
Expand Down
2 changes: 0 additions & 2 deletions src/librustc_typeck/collect.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2341,8 +2341,6 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, id: DefId) -> CodegenFnAttrs {
codegen_fn_attrs.flags |= CodegenFnAttrFlags::NO_MANGLE;
} else if attr.check_name(sym::rustc_std_internal_symbol) {
codegen_fn_attrs.flags |= CodegenFnAttrFlags::RUSTC_STD_INTERNAL_SYMBOL;
} else if attr.check_name(sym::no_debug) {
codegen_fn_attrs.flags |= CodegenFnAttrFlags::NO_DEBUG;
} else if attr.check_name(sym::used) {
codegen_fn_attrs.flags |= CodegenFnAttrFlags::USED;
} else if attr.check_name(sym::thread_local) {
Expand Down
37 changes: 0 additions & 37 deletions src/test/debuginfo/no-debug-attribute.rs

This file was deleted.

5 changes: 0 additions & 5 deletions src/test/ui/feature-gates/feature-gate-no-debug-2.rs

This file was deleted.

14 changes: 0 additions & 14 deletions src/test/ui/feature-gates/feature-gate-no-debug-2.stderr

This file was deleted.

4 changes: 0 additions & 4 deletions src/test/ui/feature-gates/feature-gate-no-debug.rs

This file was deleted.

12 changes: 0 additions & 12 deletions src/test/ui/feature-gates/feature-gate-no-debug.stderr

This file was deleted.

4 changes: 0 additions & 4 deletions src/test/ui/lint/suggestions.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// ignore-tidy-tab

#![warn(unused_mut, unused_parens)] // UI tests pass `-A unused`—see Issue #43896
#![feature(no_debug)]

#[no_mangle] const DISCOVERY: usize = 1;
//~^ ERROR const items should never be `#[no_mangle]`
Expand Down Expand Up @@ -39,9 +38,6 @@ struct Equinox {
warp_factor: f32,
}

#[no_debug] // should suggest removal of deprecated attribute
//~^ WARN deprecated
//~| HELP remove this attribute
fn main() {
while true {
//~^ WARN denote infinite loops
Expand Down
30 changes: 11 additions & 19 deletions src/test/ui/lint/suggestions.stderr
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
warning: denote infinite loops with `loop { ... }`
--> $DIR/suggestions.rs:46:5
--> $DIR/suggestions.rs:42:5
|
LL | while true {
| ^^^^^^^^^^ help: use `loop`
|
= note: `#[warn(while_true)]` on by default

warning: unnecessary parentheses around assigned value
--> $DIR/suggestions.rs:49:31
--> $DIR/suggestions.rs:45:31
|
LL | let mut registry_no = (format!("NX-{}", 74205));
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
Expand All @@ -18,16 +18,8 @@ note: the lint level is defined here
LL | #![warn(unused_mut, unused_parens)] // UI tests pass `-A unused`—see Issue #43896
| ^^^^^^^^^^^^^

warning: use of deprecated attribute `no_debug`: the `#[no_debug]` attribute was an experimental feature that has been deprecated due to lack of demand. See https://github.com/rust-lang/rust/issues/29721
--> $DIR/suggestions.rs:42:1
|
LL | #[no_debug] // should suggest removal of deprecated attribute
| ^^^^^^^^^^^ help: remove this attribute
|
= note: `#[warn(deprecated)]` on by default

warning: variable does not need to be mutable
--> $DIR/suggestions.rs:49:13
--> $DIR/suggestions.rs:45:13
|
LL | let mut registry_no = (format!("NX-{}", 74205));
| ----^^^^^^^^^^^
Expand All @@ -41,7 +33,7 @@ LL | #![warn(unused_mut, unused_parens)] // UI tests pass `-A unused`—see Issu
| ^^^^^^^^^^

warning: variable does not need to be mutable
--> $DIR/suggestions.rs:55:13
--> $DIR/suggestions.rs:51:13
|
LL | let mut
| _____________^
Expand All @@ -53,7 +45,7 @@ LL | || b = 1;
| help: remove this `mut`

error: const items should never be `#[no_mangle]`
--> $DIR/suggestions.rs:6:14
--> $DIR/suggestions.rs:5:14
|
LL | #[no_mangle] const DISCOVERY: usize = 1;
| -----^^^^^^^^^^^^^^^^^^^^^^
Expand All @@ -63,7 +55,7 @@ LL | #[no_mangle] const DISCOVERY: usize = 1;
= note: `#[deny(no_mangle_const_items)]` on by default

warning: functions generic over types or consts must be mangled
--> $DIR/suggestions.rs:12:1
--> $DIR/suggestions.rs:11:1
|
LL | #[no_mangle]
| ------------ help: remove this attribute
Expand All @@ -74,39 +66,39 @@ LL | pub fn defiant<T>(_t: T) {}
= note: `#[warn(no_mangle_generic_items)]` on by default

warning: the `warp_factor:` in this pattern is redundant
--> $DIR/suggestions.rs:61:23
--> $DIR/suggestions.rs:57:23
|
LL | Equinox { warp_factor: warp_factor } => {}
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `warp_factor`
|
= note: `#[warn(non_shorthand_field_patterns)]` on by default

error: const items should never be `#[no_mangle]`
--> $DIR/suggestions.rs:22:18
--> $DIR/suggestions.rs:21:18
|
LL | #[no_mangle] pub const DAUNTLESS: bool = true;
| ---------^^^^^^^^^^^^^^^^^^^^^^^^
| |
| help: try a static value: `pub static`

warning: functions generic over types or consts must be mangled
--> $DIR/suggestions.rs:25:18
--> $DIR/suggestions.rs:24:18
|
LL | #[no_mangle] pub fn val_jean<T>() {}
| ------------ ^^^^^^^^^^^^^^^^^^^^^^^
| |
| help: remove this attribute

error: const items should never be `#[no_mangle]`
--> $DIR/suggestions.rs:30:18
--> $DIR/suggestions.rs:29:18
|
LL | #[no_mangle] pub(crate) const VETAR: bool = true;
| ----------------^^^^^^^^^^^^^^^^^^^^
| |
| help: try a static value: `pub static`

warning: functions generic over types or consts must be mangled
--> $DIR/suggestions.rs:33:18
--> $DIR/suggestions.rs:32:18
|
LL | #[no_mangle] pub(crate) fn crossfield<T>() {}
| ------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down