about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-12-07 12:21:28 +0000
committerbors <bors@rust-lang.org>2017-12-07 12:21:28 +0000
commitee25791df5f025378e9ddebef661e25cb75d9172 (patch)
treee39e7314205cb2cf60057ef0abc357a10797f2a8
parentbb1bd88ec3adf93b678d08ca631e5b3785d2df1b (diff)
parent3f0cc7caca2a597c589e4792af2653dcc1d07aa0 (diff)
downloadrust-ee25791df5f025378e9ddebef661e25cb75d9172.tar.gz
rust-ee25791df5f025378e9ddebef661e25cb75d9172.zip
Auto merge of #46523 - CrockAgile:update-fingerprint-tests-macros, r=michaelwoerister
Update fingerprint tests macros

Part of #44924

r? @michaelwoerister
-rw-r--r--src/test/incremental/hashes/closure_expressions.rs60
-rw-r--r--src/test/incremental/hashes/for_loops.rs110
-rw-r--r--src/test/incremental/hashes/function_interfaces.rs234
-rw-r--r--src/test/incremental/hashes/inline_asm.rs60
-rw-r--r--src/test/incremental/hashes/loop_expressions.rs80
-rw-r--r--src/test/incremental/hashes/while_let_loops.rs90
-rw-r--r--src/test/incremental/hashes/while_loops.rs90
7 files changed, 320 insertions, 404 deletions
diff --git a/src/test/incremental/hashes/closure_expressions.rs b/src/test/incremental/hashes/closure_expressions.rs
index 4abc77e0ab6..6cea9a0cb14 100644
--- a/src/test/incremental/hashes/closure_expressions.rs
+++ b/src/test/incremental/hashes/closure_expressions.rs
@@ -27,16 +27,14 @@
 
 // Change closure body ---------------------------------------------------------
 #[cfg(cfail1)]
-fn change_closure_body() {
+pub fn change_closure_body() {
     let _ = || 1u32;
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_closure_body() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_closure_body() {
     let _ = || 3u32;
 }
 
@@ -44,17 +42,15 @@ fn change_closure_body() {
 
 // Add parameter ---------------------------------------------------------------
 #[cfg(cfail1)]
-fn add_parameter() {
+pub fn add_parameter() {
     let x = 0u32;
     let _ = || x + 1;
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_parameter() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_parameter() {
     let x = 0u32;
     let _ = |x: u32| x + 1;
 }
@@ -63,16 +59,14 @@ fn add_parameter() {
 
 // Change parameter pattern ----------------------------------------------------
 #[cfg(cfail1)]
-fn change_parameter_pattern() {
+pub fn change_parameter_pattern() {
     let _ = |x: &u32| x;
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_parameter_pattern() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_parameter_pattern() {
     let _ = |&x: &u32| x;
 }
 
@@ -80,16 +74,14 @@ fn change_parameter_pattern() {
 
 // Add `move` to closure -------------------------------------------------------
 #[cfg(cfail1)]
-fn add_move() {
+pub fn add_move() {
     let _ = || 1;
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_move() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_move() {
     let _ = move || 1;
 }
 
@@ -97,17 +89,15 @@ fn add_move() {
 
 // Add type ascription to parameter --------------------------------------------
 #[cfg(cfail1)]
-fn add_type_ascription_to_parameter() {
+pub fn add_type_ascription_to_parameter() {
     let closure = |x| x + 1u32;
     let _: u32 = closure(1);
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_type_ascription_to_parameter() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_type_ascription_to_parameter() {
     let closure = |x: u32| x + 1u32;
     let _: u32 = closure(1);
 }
@@ -116,17 +106,15 @@ fn add_type_ascription_to_parameter() {
 
 // Change parameter type -------------------------------------------------------
 #[cfg(cfail1)]
-fn change_parameter_type() {
+pub fn change_parameter_type() {
     let closure = |x: u32| (x as u64) + 1;
     let _ = closure(1);
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_parameter_type() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_parameter_type() {
     let closure = |x: u16| (x as u64) + 1;
     let _ = closure(1);
 }
diff --git a/src/test/incremental/hashes/for_loops.rs b/src/test/incremental/hashes/for_loops.rs
index 763b0cd05d4..a9b9602c3b1 100644
--- a/src/test/incremental/hashes/for_loops.rs
+++ b/src/test/incremental/hashes/for_loops.rs
@@ -27,7 +27,7 @@
 
 // Change loop body ------------------------------------------------------------
 #[cfg(cfail1)]
-fn change_loop_body() {
+pub fn change_loop_body() {
     let mut _x = 0;
     for _ in 0..1 {
         _x = 1;
@@ -36,11 +36,9 @@ fn change_loop_body() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_loop_body() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_loop_body() {
     let mut _x = 0;
     for _ in 0..1 {
         _x = 2;
@@ -52,7 +50,7 @@ fn change_loop_body() {
 
 // Change iteration variable name ----------------------------------------------
 #[cfg(cfail1)]
-fn change_iteration_variable_name() {
+pub fn change_iteration_variable_name() {
     let mut _x = 0;
     for _i in 0..1 {
         _x = 1;
@@ -61,11 +59,9 @@ fn change_iteration_variable_name() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_iteration_variable_name() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_iteration_variable_name() {
     let mut _x = 0;
     for _a in 0..1 {
         _x = 1;
@@ -77,7 +73,7 @@ fn change_iteration_variable_name() {
 
 // Change iteration variable pattern -------------------------------------------
 #[cfg(cfail1)]
-fn change_iteration_variable_pattern() {
+pub fn change_iteration_variable_pattern() {
     let mut _x = 0;
     for _i in &[0, 1, 2] {
         _x = 1;
@@ -86,11 +82,9 @@ fn change_iteration_variable_pattern() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_iteration_variable_pattern() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_iteration_variable_pattern() {
     let mut _x = 0;
     for &_i in &[0, 1, 2] {
         _x = 1;
@@ -102,7 +96,7 @@ fn change_iteration_variable_pattern() {
 
 // Change iterable -------------------------------------------------------------
 #[cfg(cfail1)]
-fn change_iterable() {
+pub fn change_iterable() {
     let mut _x = 0;
     for _ in &[0, 1, 2] {
         _x = 1;
@@ -111,11 +105,9 @@ fn change_iterable() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_iterable() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_iterable() {
     let mut _x = 0;
     for _ in &[0, 1, 3] {
         _x = 1;
@@ -127,7 +119,7 @@ fn change_iterable() {
 
 // Add break -------------------------------------------------------------------
 #[cfg(cfail1)]
-fn add_break() {
+pub fn add_break() {
     let mut _x = 0;
     for _ in 0..1 {
         _x = 1;
@@ -135,11 +127,9 @@ fn add_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_break() {
     let mut _x = 0;
     for _ in 0..1 {
         _x = 1;
@@ -151,7 +141,7 @@ fn add_break() {
 
 // Add loop label --------------------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label() {
+pub fn add_loop_label() {
     let mut _x = 0;
     for _ in 0..1 {
         _x = 1;
@@ -160,11 +150,9 @@ fn add_loop_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label() {
     let mut _x = 0;
     'label: for _ in 0..1 {
         _x = 1;
@@ -176,7 +164,7 @@ fn add_loop_label() {
 
 // Add loop label to break -----------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label_to_break() {
+pub fn add_loop_label_to_break() {
     let mut _x = 0;
     'label: for _ in 0..1 {
         _x = 1;
@@ -185,11 +173,9 @@ fn add_loop_label_to_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label_to_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label_to_break() {
     let mut _x = 0;
     'label: for _ in 0..1 {
         _x = 1;
@@ -201,7 +187,7 @@ fn add_loop_label_to_break() {
 
 // Change break label ----------------------------------------------------------
 #[cfg(cfail1)]
-fn change_break_label() {
+pub fn change_break_label() {
     let mut _x = 0;
     'outer: for _ in 0..1 {
         'inner: for _ in 0..1 {
@@ -212,11 +198,9 @@ fn change_break_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_break_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_break_label() {
     let mut _x = 0;
     'outer: for _ in 0..1 {
         'inner: for _ in 0..1 {
@@ -230,7 +214,7 @@ fn change_break_label() {
 
 // Add loop label to continue --------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label_to_continue() {
+pub fn add_loop_label_to_continue() {
     let mut _x = 0;
     'label: for _ in 0..1 {
         _x = 1;
@@ -239,11 +223,9 @@ fn add_loop_label_to_continue() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label_to_continue() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label_to_continue() {
     let mut _x = 0;
     'label: for _ in 0..1 {
         _x = 1;
@@ -255,7 +237,7 @@ fn add_loop_label_to_continue() {
 
 // Change continue label ----------------------------------------------------------
 #[cfg(cfail1)]
-fn change_continue_label() {
+pub fn change_continue_label() {
     let mut _x = 0;
     'outer: for _ in 0..1 {
         'inner: for _ in 0..1 {
@@ -266,11 +248,9 @@ fn change_continue_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_continue_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_continue_label() {
     let mut _x = 0;
     'outer: for _ in 0..1 {
         'inner: for _ in 0..1 {
@@ -284,7 +264,7 @@ fn change_continue_label() {
 
 // Change continue to break ----------------------------------------------------
 #[cfg(cfail1)]
-fn change_continue_to_break() {
+pub fn change_continue_to_break() {
     let mut _x = 0;
     for _ in 0..1 {
         _x = 1;
@@ -293,11 +273,9 @@ fn change_continue_to_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_continue_to_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_continue_to_break() {
     let mut _x = 0;
     for _ in 0..1 {
         _x = 1;
diff --git a/src/test/incremental/hashes/function_interfaces.rs b/src/test/incremental/hashes/function_interfaces.rs
index b3eb566367c..952256a65bd 100644
--- a/src/test/incremental/hashes/function_interfaces.rs
+++ b/src/test/incremental/hashes/function_interfaces.rs
@@ -26,245 +26,253 @@
 #![feature(intrinsics)]
 #![feature(linkage)]
 #![feature(rustc_attrs)]
-#![crate_type="rlib"]
+#![crate_type = "rlib"]
 
 
 // Add Parameter ---------------------------------------------------------------
 
 #[cfg(cfail1)]
-fn add_parameter() {}
+pub fn add_parameter() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn add_parameter(p: i32) {}
+#[rustc_clean(cfg = "cfail2",
+              except = "Hir, HirBody, MirValidated, MirOptimized, TypeckTables, FnSignature")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn add_parameter(p: i32) {}
 
 
 // Add Return Type -------------------------------------------------------------
 
 #[cfg(cfail1)]
-fn add_return_type() {}
+pub fn add_return_type() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn add_return_type() -> () {}
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn add_return_type() -> () {}
 
 
 // Change Parameter Type -------------------------------------------------------
 
 #[cfg(cfail1)]
-fn type_of_parameter(p: i32) {}
+pub fn type_of_parameter(p: i32) {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn type_of_parameter(p: i64) {}
+#[rustc_clean(cfg = "cfail2",
+              except = "Hir, HirBody, MirValidated, MirOptimized, TypeckTables, FnSignature")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn type_of_parameter(p: i64) {}
 
 
 // Change Parameter Type Reference ---------------------------------------------
 
 #[cfg(cfail1)]
-fn type_of_parameter_ref(p: &i32) {}
+pub fn type_of_parameter_ref(p: &i32) {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn type_of_parameter_ref(p: &mut i32) {}
+#[rustc_clean(cfg = "cfail2",
+              except = "Hir, HirBody, MirValidated, MirOptimized, TypeckTables, FnSignature")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn type_of_parameter_ref(p: &mut i32) {}
 
 
 // Change Parameter Order ------------------------------------------------------
 
 #[cfg(cfail1)]
-fn order_of_parameters(p1: i32, p2: i64) {}
+pub fn order_of_parameters(p1: i32, p2: i64) {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn order_of_parameters(p2: i64, p1: i32) {}
+#[rustc_clean(cfg = "cfail2",
+              except = "Hir, HirBody, MirValidated, MirOptimized, TypeckTables, FnSignature")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn order_of_parameters(p2: i64, p1: i32) {}
 
 
 // Unsafe ----------------------------------------------------------------------
 
 #[cfg(cfail1)]
-fn make_unsafe() {}
+pub fn make_unsafe() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-unsafe fn make_unsafe() {}
+#[rustc_clean(cfg = "cfail2",
+              except = "Hir, HirBody, MirValidated, MirOptimized, TypeckTables, FnSignature")]
+#[rustc_clean(cfg = "cfail3")]
+pub unsafe fn make_unsafe() {}
 
 
 // Extern ----------------------------------------------------------------------
 
 #[cfg(cfail1)]
-fn make_extern() {}
+pub fn make_extern() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-extern fn make_extern() {}
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, TypeckTables, FnSignature")]
+#[rustc_clean(cfg = "cfail3")]
+pub extern "C" fn make_extern() {}
 
 
 // Extern C Extern Rust-Intrinsic ----------------------------------------------
 
 #[cfg(cfail1)]
-extern "C" fn make_intrinsic() {}
+pub extern "C" fn make_intrinsic() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-extern "rust-intrinsic" fn make_intrinsic() {}
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, TypeckTables, FnSignature")]
+#[rustc_clean(cfg = "cfail3")]
+pub extern "rust-intrinsic" fn make_intrinsic() {}
 
 
 // Type Parameter --------------------------------------------------------------
 
 #[cfg(cfail1)]
-fn type_parameter() {}
+pub fn type_parameter() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn type_parameter<T>() {}
+#[rustc_clean(cfg = "cfail2",
+              except = "Hir, HirBody, GenericsOfItem, TypeOfItem, PredicatesOfItem")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn type_parameter<T>() {}
 
 
 // Lifetime Parameter ----------------------------------------------------------
 
 #[cfg(cfail1)]
-fn lifetime_parameter() {}
+pub fn lifetime_parameter() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn lifetime_parameter<'a>() {}
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, GenericsOfItem")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn lifetime_parameter<'a>() {}
 
 
 // Trait Bound -----------------------------------------------------------------
 
 #[cfg(cfail1)]
-fn trait_bound<T>() {}
+pub fn trait_bound<T>() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn trait_bound<T: Eq>() {}
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, PredicatesOfItem")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn trait_bound<T: Eq>() {}
 
 
 // Builtin Bound ---------------------------------------------------------------
 
 #[cfg(cfail1)]
-fn builtin_bound<T>() {}
+pub fn builtin_bound<T>() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn builtin_bound<T: Send>() {}
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, PredicatesOfItem")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn builtin_bound<T: Send>() {}
 
 
 // Lifetime Bound --------------------------------------------------------------
 
 #[cfg(cfail1)]
-fn lifetime_bound<'a, T>() {}
+pub fn lifetime_bound<'a, T>() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn lifetime_bound<'a, T: 'a>() {}
+#[rustc_clean(cfg = "cfail2",
+              except = "Hir, HirBody, GenericsOfItem, TypeOfItem, PredicatesOfItem")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn lifetime_bound<'a, T: 'a>() {}
 
 
 // Second Trait Bound ----------------------------------------------------------
 
 #[cfg(cfail1)]
-fn second_trait_bound<T: Eq>() {}
+pub fn second_trait_bound<T: Eq>() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn second_trait_bound<T: Eq + Clone>() {}
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, PredicatesOfItem")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn second_trait_bound<T: Eq + Clone>() {}
 
 
 // Second Builtin Bound --------------------------------------------------------
 
 #[cfg(cfail1)]
-fn second_builtin_bound<T: Send>() {}
+pub fn second_builtin_bound<T: Send>() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn second_builtin_bound<T: Send + Sized>() {}
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, PredicatesOfItem")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn second_builtin_bound<T: Send + Sized>() {}
 
 
 // Second Lifetime Bound -------------------------------------------------------
 
 #[cfg(cfail1)]
-fn second_lifetime_bound<'a, 'b, T: 'a>() {}
+pub fn second_lifetime_bound<'a, 'b, T: 'a>() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn second_lifetime_bound<'a, 'b, T: 'a + 'b>() {}
+#[rustc_clean(cfg = "cfail2",
+              except = "Hir, HirBody, GenericsOfItem, TypeOfItem, PredicatesOfItem")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn second_lifetime_bound<'a, 'b, T: 'a + 'b>() {}
 
 
 // Inline ----------------------------------------------------------------------
 
 #[cfg(cfail1)]
-fn inline() {}
+pub fn inline() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody")]
+#[rustc_clean(cfg = "cfail3")]
 #[inline]
-fn inline() {}
+pub fn inline() {}
 
 
 // Inline Never ----------------------------------------------------------------
 
 #[cfg(cfail1)]
 #[inline(always)]
-fn inline_never() {}
+pub fn inline_never() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody")]
+#[rustc_clean(cfg = "cfail3")]
 #[inline(never)]
-fn inline_never() {}
+pub fn inline_never() {}
 
 
 // No Mangle -------------------------------------------------------------------
 
 #[cfg(cfail1)]
-fn no_mangle() {}
+pub fn no_mangle() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody")]
+#[rustc_clean(cfg = "cfail3")]
 #[no_mangle]
-fn no_mangle() {}
+pub fn no_mangle() {}
 
 
 // Linkage ---------------------------------------------------------------------
 
 #[cfg(cfail1)]
-fn linkage() {}
+pub fn linkage() {}
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[linkage="weak_odr"]
-fn linkage() {}
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody")]
+#[rustc_clean(cfg = "cfail3")]
+#[linkage = "weak_odr"]
+pub fn linkage() {}
 
 
 // Return Impl Trait -----------------------------------------------------------
 
 #[cfg(cfail1)]
-fn return_impl_trait() -> i32 {
+pub fn return_impl_trait() -> i32 {
     0
 }
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn return_impl_trait() -> impl Clone {
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, TypeckTables, FnSignature")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn return_impl_trait() -> impl Clone {
     0
 }
 
@@ -272,32 +280,33 @@ fn return_impl_trait() -> impl Clone {
 // Change Return Impl Trait ----------------------------------------------------
 
 #[cfg(cfail1)]
-fn change_return_impl_trait() -> impl Clone {
+pub fn change_return_impl_trait() -> impl Clone {
     0u32
 }
 
 #[cfg(not(cfail1))]
-#[rustc_dirty(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-fn change_return_impl_trait() -> impl Copy {
+#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody")]
+#[rustc_clean(cfg = "cfail3")]
+pub fn change_return_impl_trait() -> impl Copy {
     0u32
 }
 
 
 // Change Return Type Indirectly -----------------------------------------------
 
-struct ReferencedType1;
-struct ReferencedType2;
+pub struct ReferencedType1;
+pub struct ReferencedType2;
 
-mod change_return_type_indirectly {
+pub mod change_return_type_indirectly {
     #[cfg(cfail1)]
     use super::ReferencedType1 as ReturnType;
     #[cfg(not(cfail1))]
     use super::ReferencedType2 as ReturnType;
 
-    #[rustc_dirty(label="Hir", cfg="cfail2")]
-    #[rustc_clean(label="Hir", cfg="cfail3")]
-    fn indirect_return_type() -> ReturnType {
+    #[rustc_clean(cfg = "cfail2",
+                  except = "Hir, HirBody, MirValidated, MirOptimized, TypeckTables, FnSignature")]
+    #[rustc_clean(cfg = "cfail3")]
+    pub fn indirect_return_type() -> ReturnType {
         ReturnType {}
     }
 }
@@ -305,44 +314,49 @@ mod change_return_type_indirectly {
 
 // Change Parameter Type Indirectly --------------------------------------------
 
-mod change_parameter_type_indirectly {
+pub mod change_parameter_type_indirectly {
     #[cfg(cfail1)]
     use super::ReferencedType1 as ParameterType;
     #[cfg(not(cfail1))]
     use super::ReferencedType2 as ParameterType;
 
-    #[rustc_dirty(label="Hir", cfg="cfail2")]
-    #[rustc_clean(label="Hir", cfg="cfail3")]
-    fn indirect_parameter_type(p: ParameterType) {}
+    #[rustc_clean(cfg = "cfail2",
+                  except = "Hir, HirBody, MirValidated, MirOptimized, TypeckTables, FnSignature")]
+    #[rustc_clean(cfg = "cfail3")]
+    pub fn indirect_parameter_type(p: ParameterType) {}
 }
 
 
 // Change Trait Bound Indirectly -----------------------------------------------
 
-trait ReferencedTrait1 {}
-trait ReferencedTrait2 {}
+pub trait ReferencedTrait1 {}
+pub trait ReferencedTrait2 {}
 
-mod change_trait_bound_indirectly {
+pub mod change_trait_bound_indirectly {
     #[cfg(cfail1)]
     use super::ReferencedTrait1 as Trait;
     #[cfg(not(cfail1))]
     use super::ReferencedTrait2 as Trait;
 
-    #[rustc_dirty(label="Hir", cfg="cfail2")]
-    #[rustc_clean(label="Hir", cfg="cfail3")]
-    fn indirect_trait_bound<T: Trait>(p: T) {}
+    #[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, PredicatesOfItem")]
+    #[rustc_clean(cfg = "cfail3")]
+    pub fn indirect_trait_bound<T: Trait>(p: T) {}
 }
 
 
 // Change Trait Bound Indirectly In Where Clause -------------------------------
 
-mod change_trait_bound_indirectly_in_where_clause {
+pub mod change_trait_bound_indirectly_in_where_clause {
     #[cfg(cfail1)]
     use super::ReferencedTrait1 as Trait;
     #[cfg(not(cfail1))]
     use super::ReferencedTrait2 as Trait;
 
-    #[rustc_dirty(label="Hir", cfg="cfail2")]
-    #[rustc_clean(label="Hir", cfg="cfail3")]
-    fn indirect_trait_bound_where<T>(p: T) where T: Trait {}
+    #[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, PredicatesOfItem")]
+    #[rustc_clean(cfg = "cfail3")]
+    pub fn indirect_trait_bound_where<T>(p: T)
+    where
+        T: Trait,
+    {
+    }
 }
diff --git a/src/test/incremental/hashes/inline_asm.rs b/src/test/incremental/hashes/inline_asm.rs
index 0947239c573..1d66d4ab9d3 100644
--- a/src/test/incremental/hashes/inline_asm.rs
+++ b/src/test/incremental/hashes/inline_asm.rs
@@ -30,7 +30,7 @@
 // Change template -------------------------------------------------------------
 #[cfg(cfail1)]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_template(a: i32) -> i32 {
+pub fn change_template(a: i32) -> i32 {
     let c: i32;
     unsafe {
         asm!("add 1, $0"
@@ -44,12 +44,10 @@ fn change_template(a: i32) -> i32 {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_template(a: i32) -> i32 {
+pub fn change_template(a: i32) -> i32 {
     let c: i32;
     unsafe {
         asm!("add 2, $0"
@@ -67,7 +65,7 @@ fn change_template(a: i32) -> i32 {
 // Change output -------------------------------------------------------------
 #[cfg(cfail1)]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_output(a: i32) -> i32 {
+pub fn change_output(a: i32) -> i32 {
     let mut _out1: i32 = 0;
     let mut _out2: i32 = 0;
     unsafe {
@@ -82,12 +80,10 @@ fn change_output(a: i32) -> i32 {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_output(a: i32) -> i32 {
+pub fn change_output(a: i32) -> i32 {
     let mut _out1: i32 = 0;
     let mut _out2: i32 = 0;
     unsafe {
@@ -106,7 +102,7 @@ fn change_output(a: i32) -> i32 {
 // Change input -------------------------------------------------------------
 #[cfg(cfail1)]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_input(_a: i32, _b: i32) -> i32 {
+pub fn change_input(_a: i32, _b: i32) -> i32 {
     let _out;
     unsafe {
         asm!("add 1, $0"
@@ -120,12 +116,10 @@ fn change_input(_a: i32, _b: i32) -> i32 {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_input(_a: i32, _b: i32) -> i32 {
+pub fn change_input(_a: i32, _b: i32) -> i32 {
     let _out;
     unsafe {
         asm!("add 1, $0"
@@ -143,7 +137,7 @@ fn change_input(_a: i32, _b: i32) -> i32 {
 // Change input constraint -----------------------------------------------------
 #[cfg(cfail1)]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_input_constraint(_a: i32, _b: i32) -> i32 {
+pub fn change_input_constraint(_a: i32, _b: i32) -> i32 {
     let _out;
     unsafe {
         asm!("add 1, $0"
@@ -157,12 +151,10 @@ fn change_input_constraint(_a: i32, _b: i32) -> i32 {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_input_constraint(_a: i32, _b: i32) -> i32 {
+pub fn change_input_constraint(_a: i32, _b: i32) -> i32 {
     let _out;
     unsafe {
         asm!("add 1, $0"
@@ -180,7 +172,7 @@ fn change_input_constraint(_a: i32, _b: i32) -> i32 {
 // Change clobber --------------------------------------------------------------
 #[cfg(cfail1)]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_clobber(_a: i32) -> i32 {
+pub fn change_clobber(_a: i32) -> i32 {
     let _out;
     unsafe {
         asm!("add 1, $0"
@@ -194,12 +186,10 @@ fn change_clobber(_a: i32) -> i32 {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_clobber(_a: i32) -> i32 {
+pub fn change_clobber(_a: i32) -> i32 {
     let _out;
     unsafe {
         asm!("add 1, $0"
@@ -217,7 +207,7 @@ fn change_clobber(_a: i32) -> i32 {
 // Change options --------------------------------------------------------------
 #[cfg(cfail1)]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_options(_a: i32) -> i32 {
+pub fn change_options(_a: i32) -> i32 {
     let _out;
     unsafe {
         asm!("add 1, $0"
@@ -231,12 +221,10 @@ fn change_options(_a: i32) -> i32 {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-fn change_options(_a: i32) -> i32 {
+pub fn change_options(_a: i32) -> i32 {
     let _out;
     unsafe {
         asm!("add 1, $0"
diff --git a/src/test/incremental/hashes/loop_expressions.rs b/src/test/incremental/hashes/loop_expressions.rs
index 8d015288757..243dc9ee519 100644
--- a/src/test/incremental/hashes/loop_expressions.rs
+++ b/src/test/incremental/hashes/loop_expressions.rs
@@ -27,7 +27,7 @@
 
 // Change loop body ------------------------------------------------------------
 #[cfg(cfail1)]
-fn change_loop_body() {
+pub fn change_loop_body() {
     let mut _x = 0;
     loop {
         _x = 1;
@@ -36,11 +36,9 @@ fn change_loop_body() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_loop_body() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_loop_body() {
     let mut _x = 0;
     loop {
         _x = 2;
@@ -52,7 +50,7 @@ fn change_loop_body() {
 
 // Add break -------------------------------------------------------------------
 #[cfg(cfail1)]
-fn add_break() {
+pub fn add_break() {
     let mut _x = 0;
     loop {
         _x = 1;
@@ -60,11 +58,9 @@ fn add_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_break() {
     let mut _x = 0;
     loop {
         _x = 1;
@@ -76,7 +72,7 @@ fn add_break() {
 
 // Add loop label --------------------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label() {
+pub fn add_loop_label() {
     let mut _x = 0;
     loop {
         _x = 1;
@@ -85,11 +81,9 @@ fn add_loop_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label() {
     let mut _x = 0;
     'label: loop {
         _x = 1;
@@ -101,7 +95,7 @@ fn add_loop_label() {
 
 // Add loop label to break -----------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label_to_break() {
+pub fn add_loop_label_to_break() {
     let mut _x = 0;
     'label: loop {
         _x = 1;
@@ -110,11 +104,9 @@ fn add_loop_label_to_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label_to_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label_to_break() {
     let mut _x = 0;
     'label: loop {
         _x = 1;
@@ -126,7 +118,7 @@ fn add_loop_label_to_break() {
 
 // Change break label ----------------------------------------------------------
 #[cfg(cfail1)]
-fn change_break_label() {
+pub fn change_break_label() {
     let mut _x = 0;
     'outer: loop {
         'inner: loop {
@@ -137,11 +129,9 @@ fn change_break_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_break_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_break_label() {
     let mut _x = 0;
     'outer: loop {
         'inner: loop {
@@ -155,7 +145,7 @@ fn change_break_label() {
 
 // Add loop label to continue --------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label_to_continue() {
+pub fn add_loop_label_to_continue() {
     let mut _x = 0;
     'label: loop {
         _x = 1;
@@ -164,11 +154,9 @@ fn add_loop_label_to_continue() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label_to_continue() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label_to_continue() {
     let mut _x = 0;
     'label: loop {
         _x = 1;
@@ -180,7 +168,7 @@ fn add_loop_label_to_continue() {
 
 // Change continue label ----------------------------------------------------------
 #[cfg(cfail1)]
-fn change_continue_label() {
+pub fn change_continue_label() {
     let mut _x = 0;
     'outer: loop {
         'inner: loop {
@@ -191,11 +179,9 @@ fn change_continue_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_continue_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_continue_label() {
     let mut _x = 0;
     'outer: loop {
         'inner: loop {
@@ -209,7 +195,7 @@ fn change_continue_label() {
 
 // Change continue to break ----------------------------------------------------
 #[cfg(cfail1)]
-fn change_continue_to_break() {
+pub fn change_continue_to_break() {
     let mut _x = 0;
     loop {
         _x = 1;
@@ -218,11 +204,9 @@ fn change_continue_to_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_continue_to_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_continue_to_break() {
     let mut _x = 0;
     loop {
         _x = 1;
diff --git a/src/test/incremental/hashes/while_let_loops.rs b/src/test/incremental/hashes/while_let_loops.rs
index eae5aea6510..cab38d0adc2 100644
--- a/src/test/incremental/hashes/while_let_loops.rs
+++ b/src/test/incremental/hashes/while_let_loops.rs
@@ -27,7 +27,7 @@
 
 // Change loop body ------------------------------------------------------------
 #[cfg(cfail1)]
-fn change_loop_body() {
+pub fn change_loop_body() {
     let mut _x = 0;
     while let Some(0u32) = None {
         _x = 1;
@@ -36,11 +36,9 @@ fn change_loop_body() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_loop_body() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_loop_body() {
     let mut _x = 0;
     while let Some(0u32) = None {
         _x = 2;
@@ -52,7 +50,7 @@ fn change_loop_body() {
 
 // Change loop body ------------------------------------------------------------
 #[cfg(cfail1)]
-fn change_loop_condition() {
+pub fn change_loop_condition() {
     let mut _x = 0;
     while let Some(0u32) = None {
         _x = 1;
@@ -61,11 +59,9 @@ fn change_loop_condition() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_loop_condition() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_loop_condition() {
     let mut _x = 0;
     while let Some(1u32) = None {
         _x = 1;
@@ -77,7 +73,7 @@ fn change_loop_condition() {
 
 // Add break -------------------------------------------------------------------
 #[cfg(cfail1)]
-fn add_break() {
+pub fn add_break() {
     let mut _x = 0;
     while let Some(0u32) = None {
         _x = 1;
@@ -85,11 +81,9 @@ fn add_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_break() {
     let mut _x = 0;
     while let Some(0u32) = None {
         _x = 1;
@@ -101,7 +95,7 @@ fn add_break() {
 
 // Add loop label --------------------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label() {
+pub fn add_loop_label() {
     let mut _x = 0;
     while let Some(0u32) = None {
         _x = 1;
@@ -110,11 +104,9 @@ fn add_loop_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label() {
     let mut _x = 0;
     'label: while let Some(0u32) = None {
         _x = 1;
@@ -126,7 +118,7 @@ fn add_loop_label() {
 
 // Add loop label to break -----------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label_to_break() {
+pub fn add_loop_label_to_break() {
     let mut _x = 0;
     'label: while let Some(0u32) = None {
         _x = 1;
@@ -135,11 +127,9 @@ fn add_loop_label_to_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label_to_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label_to_break() {
     let mut _x = 0;
     'label: while let Some(0u32) = None {
         _x = 1;
@@ -151,7 +141,7 @@ fn add_loop_label_to_break() {
 
 // Change break label ----------------------------------------------------------
 #[cfg(cfail1)]
-fn change_break_label() {
+pub fn change_break_label() {
     let mut _x = 0;
     'outer: while let Some(0u32) = None {
         'inner: while let Some(0u32) = None {
@@ -162,11 +152,9 @@ fn change_break_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_break_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_break_label() {
     let mut _x = 0;
     'outer: while let Some(0u32) = None {
         'inner: while let Some(0u32) = None {
@@ -180,7 +168,7 @@ fn change_break_label() {
 
 // Add loop label to continue --------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label_to_continue() {
+pub fn add_loop_label_to_continue() {
     let mut _x = 0;
     'label: while let Some(0u32) = None {
         _x = 1;
@@ -189,11 +177,9 @@ fn add_loop_label_to_continue() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label_to_continue() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label_to_continue() {
     let mut _x = 0;
     'label: while let Some(0u32) = None {
         _x = 1;
@@ -205,7 +191,7 @@ fn add_loop_label_to_continue() {
 
 // Change continue label ----------------------------------------------------------
 #[cfg(cfail1)]
-fn change_continue_label() {
+pub fn change_continue_label() {
     let mut _x = 0;
     'outer: while let Some(0u32) = None {
         'inner: while let Some(0u32) = None {
@@ -216,11 +202,9 @@ fn change_continue_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_continue_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_continue_label() {
     let mut _x = 0;
     'outer: while let Some(0u32) = None {
         'inner: while let Some(0u32) = None {
@@ -234,7 +218,7 @@ fn change_continue_label() {
 
 // Change continue to break ----------------------------------------------------
 #[cfg(cfail1)]
-fn change_continue_to_break() {
+pub fn change_continue_to_break() {
     let mut _x = 0;
     while let Some(0u32) = None {
         _x = 1;
@@ -243,11 +227,9 @@ fn change_continue_to_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_continue_to_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_continue_to_break() {
     let mut _x = 0;
     while let Some(0u32) = None {
         _x = 1;
diff --git a/src/test/incremental/hashes/while_loops.rs b/src/test/incremental/hashes/while_loops.rs
index 6b1898e401b..30989f33b4b 100644
--- a/src/test/incremental/hashes/while_loops.rs
+++ b/src/test/incremental/hashes/while_loops.rs
@@ -27,7 +27,7 @@
 
 // Change loop body ------------------------------------------------------------
 #[cfg(cfail1)]
-fn change_loop_body() {
+pub fn change_loop_body() {
     let mut _x = 0;
     while true {
         _x = 1;
@@ -36,11 +36,9 @@ fn change_loop_body() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_loop_body() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_loop_body() {
     let mut _x = 0;
     while true {
         _x = 2;
@@ -52,7 +50,7 @@ fn change_loop_body() {
 
 // Change loop body ------------------------------------------------------------
 #[cfg(cfail1)]
-fn change_loop_condition() {
+pub fn change_loop_condition() {
     let mut _x = 0;
     while true {
         _x = 1;
@@ -61,11 +59,9 @@ fn change_loop_condition() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_loop_condition() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_loop_condition() {
     let mut _x = 0;
     while false {
         _x = 1;
@@ -77,7 +73,7 @@ fn change_loop_condition() {
 
 // Add break -------------------------------------------------------------------
 #[cfg(cfail1)]
-fn add_break() {
+pub fn add_break() {
     let mut _x = 0;
     while true {
         _x = 1;
@@ -85,11 +81,9 @@ fn add_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized, TypeckTables")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_break() {
     let mut _x = 0;
     while true {
         _x = 1;
@@ -101,7 +95,7 @@ fn add_break() {
 
 // Add loop label --------------------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label() {
+pub fn add_loop_label() {
     let mut _x = 0;
     while true {
         _x = 1;
@@ -110,11 +104,9 @@ fn add_loop_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label() {
     let mut _x = 0;
     'label: while true {
         _x = 1;
@@ -126,7 +118,7 @@ fn add_loop_label() {
 
 // Add loop label to break -----------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label_to_break() {
+pub fn add_loop_label_to_break() {
     let mut _x = 0;
     'label: while true {
         _x = 1;
@@ -135,11 +127,9 @@ fn add_loop_label_to_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label_to_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label_to_break() {
     let mut _x = 0;
     'label: while true {
         _x = 1;
@@ -151,7 +141,7 @@ fn add_loop_label_to_break() {
 
 // Change break label ----------------------------------------------------------
 #[cfg(cfail1)]
-fn change_break_label() {
+pub fn change_break_label() {
     let mut _x = 0;
     'outer: while true {
         'inner: while true {
@@ -162,11 +152,9 @@ fn change_break_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_break_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_break_label() {
     let mut _x = 0;
     'outer: while true {
         'inner: while true {
@@ -180,7 +168,7 @@ fn change_break_label() {
 
 // Add loop label to continue --------------------------------------------------
 #[cfg(cfail1)]
-fn add_loop_label_to_continue() {
+pub fn add_loop_label_to_continue() {
     let mut _x = 0;
     'label: while true {
         _x = 1;
@@ -189,11 +177,9 @@ fn add_loop_label_to_continue() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn add_loop_label_to_continue() {
+#[rustc_clean(cfg="cfail2", except="HirBody")]
+#[rustc_clean(cfg="cfail3")]
+pub fn add_loop_label_to_continue() {
     let mut _x = 0;
     'label: while true {
         _x = 1;
@@ -205,7 +191,7 @@ fn add_loop_label_to_continue() {
 
 // Change continue label ----------------------------------------------------------
 #[cfg(cfail1)]
-fn change_continue_label() {
+pub fn change_continue_label() {
     let mut _x = 0;
     'outer: while true {
         'inner: while true {
@@ -216,11 +202,9 @@ fn change_continue_label() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_continue_label() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_continue_label() {
     let mut _x = 0;
     'outer: while true {
         'inner: while true {
@@ -234,7 +218,7 @@ fn change_continue_label() {
 
 // Change continue to break ----------------------------------------------------
 #[cfg(cfail1)]
-fn change_continue_to_break() {
+pub fn change_continue_to_break() {
     let mut _x = 0;
     while true {
         _x = 1;
@@ -243,11 +227,9 @@ fn change_continue_to_break() {
 }
 
 #[cfg(not(cfail1))]
-#[rustc_clean(label="Hir", cfg="cfail2")]
-#[rustc_clean(label="Hir", cfg="cfail3")]
-#[rustc_dirty(label="HirBody", cfg="cfail2")]
-#[rustc_clean(label="HirBody", cfg="cfail3")]
-fn change_continue_to_break() {
+#[rustc_clean(cfg="cfail2", except="HirBody, MirValidated, MirOptimized")]
+#[rustc_clean(cfg="cfail3")]
+pub fn change_continue_to_break() {
     let mut _x = 0;
     while true {
         _x = 1;