about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-03-26 18:41:38 +0000
committerbors <bors@rust-lang.org>2018-03-26 18:41:38 +0000
commit188e693b392116c46f746e86f8521f9621fcfd43 (patch)
tree21205e49317c0c351e2ef53a584559a213e862b8
parentab8b961677ac5c74762dcea955aa0ff4d7fe4915 (diff)
parent140bf949bf65bb0479dbe31bd3474d5546ef59e1 (diff)
downloadrust-188e693b392116c46f746e86f8521f9621fcfd43.tar.gz
rust-188e693b392116c46f746e86f8521f9621fcfd43.zip
Auto merge of #49101 - mark-i-m:stabilize_i128, r=nagisa
Stabilize 128-bit integers :tada:

cc #35118

EDIT: This should be merged only after the following have been merged:
- [x] https://github.com/rust-lang-nursery/compiler-builtins/pull/236
- [x] https://github.com/rust-lang/book/pull/1230
-rw-r--r--src/doc/unstable-book/src/language-features/i128-type.md25
-rw-r--r--src/doc/unstable-book/src/language-features/repr128.md18
-rw-r--r--src/liballoc/benches/lib.rs2
-rw-r--r--src/liballoc/lib.rs2
m---------src/libcompiler_builtins0
-rw-r--r--src/libcore/hash/mod.rs4
-rw-r--r--src/libcore/lib.rs2
-rw-r--r--src/libcore/num/i128.rs4
-rw-r--r--src/libcore/num/mod.rs45
-rw-r--r--src/libcore/num/u128.rs4
-rw-r--r--src/libcore/tests/lib.rs2
-rw-r--r--src/libproc_macro/lib.rs2
-rw-r--r--src/librustc/lib.rs3
-rw-r--r--src/librustc_apfloat/lib.rs2
-rw-r--r--src/librustc_apfloat/tests/ieee.rs2
-rw-r--r--src/librustc_const_eval/lib.rs2
-rw-r--r--src/librustc_const_math/lib.rs3
-rw-r--r--src/librustc_data_structures/lib.rs3
-rw-r--r--src/librustc_errors/lib.rs2
-rw-r--r--src/librustc_incremental/lib.rs2
-rw-r--r--src/librustc_lint/lib.rs2
-rw-r--r--src/librustc_metadata/lib.rs2
-rw-r--r--src/librustc_mir/lib.rs2
-rw-r--r--src/librustc_resolve/lib.rs13
-rw-r--r--src/librustc_trans/lib.rs3
-rw-r--r--src/librustc_trans_utils/lib.rs2
-rw-r--r--src/librustc_typeck/lib.rs2
-rw-r--r--src/libserialize/lib.rs2
-rw-r--r--src/libstd/lib.rs7
-rw-r--r--src/libstd/net/ip.rs4
-rw-r--r--src/libstd/num.rs7
-rw-r--r--src/libstd/primitive_docs.rs4
-rw-r--r--src/libsyntax/diagnostic_list.rs12
-rw-r--r--src/libsyntax/feature_gate.rs17
-rw-r--r--src/libsyntax/lib.rs2
-rw-r--r--src/libsyntax_pos/lib.rs2
-rw-r--r--src/test/codegen/unchecked-float-casts.rs1
-rw-r--r--src/test/compile-fail/i128-feature-libs.rs17
-rw-r--r--src/test/mir-opt/lower_128bit_debug_test.rs1
-rw-r--r--src/test/mir-opt/lower_128bit_test.rs1
-rw-r--r--src/test/run-pass/float-int-invalid-const-cast.rs1
-rw-r--r--src/test/run-pass/i128-ffi.rs2
-rw-r--r--src/test/run-pass/i128.rs2
-rw-r--r--src/test/run-pass/intrinsics-integer.rs2
-rw-r--r--src/test/run-pass/issue-38763.rs2
-rw-r--r--src/test/run-pass/issue-38987.rs1
-rw-r--r--src/test/run-pass/next-power-of-two-overflow-debug.rs2
-rw-r--r--src/test/run-pass/next-power-of-two-overflow-ndebug.rs2
-rw-r--r--src/test/run-pass/saturating-float-casts.rs2
-rw-r--r--src/test/run-pass/u128-as-f32.rs2
-rw-r--r--src/test/run-pass/u128.rs2
-rw-r--r--src/test/ui/error-codes/E0658.rs7
-rw-r--r--src/test/ui/error-codes/E0658.stderr12
-rw-r--r--src/test/ui/feature-gate-i128_type.rs18
-rw-r--r--src/test/ui/feature-gate-i128_type.stderr19
-rw-r--r--src/test/ui/feature-gate-i128_type2.rs34
-rw-r--r--src/test/ui/feature-gate-i128_type2.stderr45
-rw-r--r--src/test/ui/lint-ctypes.rs2
-rw-r--r--src/test/ui/lint/type-overflow.rs2
-rw-r--r--src/test/ui/lint/type-overflow.stderr14
60 files changed, 105 insertions, 300 deletions
diff --git a/src/doc/unstable-book/src/language-features/i128-type.md b/src/doc/unstable-book/src/language-features/i128-type.md
deleted file mode 100644
index a850b7644c3..00000000000
--- a/src/doc/unstable-book/src/language-features/i128-type.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# `i128_type`
-
-The tracking issue for this feature is: [#35118]
-
-[#35118]: https://github.com/rust-lang/rust/issues/35118
-
-------------------------
-
-The `i128_type` feature adds support for 128 bit signed and unsigned integer
-types.
-
-```rust
-#![feature(i128_type)]
-
-fn main() {
-    assert_eq!(1u128 + 1u128, 2u128);
-    assert_eq!(u128::min_value(), 0);
-    assert_eq!(u128::max_value(), 340282366920938463463374607431768211455);
-
-    assert_eq!(1i128 - 2i128, -1i128);
-    assert_eq!(i128::min_value(), -170141183460469231731687303715884105728);
-    assert_eq!(i128::max_value(), 170141183460469231731687303715884105727);
-}
-```
-
diff --git a/src/doc/unstable-book/src/language-features/repr128.md b/src/doc/unstable-book/src/language-features/repr128.md
new file mode 100644
index 00000000000..0858988952c
--- /dev/null
+++ b/src/doc/unstable-book/src/language-features/repr128.md
@@ -0,0 +1,18 @@
+# `repr128`
+
+The tracking issue for this feature is: [#35118]
+
+[#35118]: https://github.com/rust-lang/rust/issues/35118
+
+------------------------
+
+The `repr128` feature adds support for `#[repr(u128)]` on `enum`s.
+
+```rust
+#![feature(repr128)]
+
+#[repr(u128)]
+enum Foo {
+    Bar(u64),
+}
+```
diff --git a/src/liballoc/benches/lib.rs b/src/liballoc/benches/lib.rs
index 2de0ffb4b26..09685d1bb40 100644
--- a/src/liballoc/benches/lib.rs
+++ b/src/liballoc/benches/lib.rs
@@ -10,7 +10,7 @@
 
 #![deny(warnings)]
 
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(rand)]
 #![feature(repr_simd)]
 #![feature(test)]
diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs
index f914b1a93a9..19d64d8fea9 100644
--- a/src/liballoc/lib.rs
+++ b/src/liballoc/lib.rs
@@ -97,7 +97,7 @@
 #![feature(from_ref)]
 #![feature(fundamental)]
 #![feature(generic_param_attrs)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(iter_rfold)]
 #![feature(lang_items)]
 #![feature(needs_allocator)]
diff --git a/src/libcompiler_builtins b/src/libcompiler_builtins
-Subproject 266ea0740a5bdd262a38bbd88fb55fc3d2a7a96
+Subproject 263a703b10351d8930e48045b4fd09768991b86
diff --git a/src/libcore/hash/mod.rs b/src/libcore/hash/mod.rs
index ab714645675..3e1f21cafe4 100644
--- a/src/libcore/hash/mod.rs
+++ b/src/libcore/hash/mod.rs
@@ -308,7 +308,7 @@ pub trait Hasher {
     }
     /// Writes a single `u128` into this hasher.
     #[inline]
-    #[unstable(feature = "i128", issue = "35118")]
+    #[stable(feature = "i128", since = "1.26.0")]
     fn write_u128(&mut self, i: u128) {
         self.write(&unsafe { mem::transmute::<_, [u8; 16]>(i) })
     }
@@ -348,7 +348,7 @@ pub trait Hasher {
     }
     /// Writes a single `i128` into this hasher.
     #[inline]
-    #[unstable(feature = "i128", issue = "35118")]
+    #[stable(feature = "i128", since = "1.26.0")]
     fn write_i128(&mut self, i: i128) {
         self.write_u128(i as u128)
     }
diff --git a/src/libcore/lib.rs b/src/libcore/lib.rs
index 9aebe2e4ee4..11fecde3951 100644
--- a/src/libcore/lib.rs
+++ b/src/libcore/lib.rs
@@ -78,7 +78,7 @@
 #![feature(doc_spotlight)]
 #![feature(fn_must_use)]
 #![feature(fundamental)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![cfg_attr(stage0, feature(inclusive_range_syntax))]
 #![feature(intrinsics)]
 #![feature(iterator_flatten)]
diff --git a/src/libcore/num/i128.rs b/src/libcore/num/i128.rs
index 04354e2e33f..989376d1ac2 100644
--- a/src/libcore/num/i128.rs
+++ b/src/libcore/num/i128.rs
@@ -12,6 +12,6 @@
 //!
 //! *[See also the `i128` primitive type](../../std/primitive.i128.html).*
 
-#![unstable(feature = "i128", issue="35118")]
+#![stable(feature = "i128", since = "1.26.0")]
 
-int_module! { i128, #[unstable(feature = "i128", issue="35118")] }
+int_module! { i128, #[stable(feature = "i128", since="1.26.0")] }
diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs
index 18e0aa453d8..a5ba0bcdf7e 100644
--- a/src/libcore/num/mod.rs
+++ b/src/libcore/num/mod.rs
@@ -97,14 +97,8 @@ nonzero_integers! {
     NonZeroU16(u16); NonZeroI16(i16);
     NonZeroU32(u32); NonZeroI32(i32);
     NonZeroU64(u64); NonZeroI64(i64);
-    NonZeroUsize(usize); NonZeroIsize(isize);
-}
-
-nonzero_integers! {
-    // Change this to `#[unstable(feature = "i128", issue = "35118")]`
-    // if other NonZero* integer types are stabilizied before 128-bit integers
-    #[unstable(feature = "nonzero", issue = "49137")]
     NonZeroU128(u128); NonZeroI128(i128);
+    NonZeroUsize(usize); NonZeroIsize(isize);
 }
 
 /// Provides intentionally-wrapped arithmetic on `T`.
@@ -1635,11 +1629,7 @@ impl i64 {
 #[lang = "i128"]
 impl i128 {
     int_impl! { i128, i128, u128, 128, -170141183460469231731687303715884105728,
-        170141183460469231731687303715884105727, "#![feature(i128_type)]
-#![feature(i128)]
-# fn main() {
-", "
-# }" }
+        170141183460469231731687303715884105727, "", "" }
 }
 
 #[cfg(target_pointer_width = "16")]
@@ -3493,12 +3483,7 @@ impl u64 {
 
 #[lang = "u128"]
 impl u128 {
-    uint_impl! { u128, u128, 128, 340282366920938463463374607431768211455, "#![feature(i128_type)]
-#![feature(i128)]
-
-# fn main() {
-", "
-# }" }
+    uint_impl! { u128, u128, 128, 340282366920938463463374607431768211455, "", "" }
 }
 
 #[cfg(target_pointer_width = "16")]
@@ -4055,39 +4040,39 @@ macro_rules! impl_from {
 impl_from! { u8, u16, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
 impl_from! { u8, u32, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
 impl_from! { u8, u64, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
-impl_from! { u8, u128, #[unstable(feature = "i128", issue = "35118")] }
+impl_from! { u8, u128, #[stable(feature = "i128", since = "1.26.0")] }
 impl_from! { u8, usize, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
 impl_from! { u16, u32, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
 impl_from! { u16, u64, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
-impl_from! { u16, u128, #[unstable(feature = "i128", issue = "35118")] }
+impl_from! { u16, u128, #[stable(feature = "i128", since = "1.26.0")] }
 impl_from! { u32, u64, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
-impl_from! { u32, u128, #[unstable(feature = "i128", issue = "35118")] }
-impl_from! { u64, u128, #[unstable(feature = "i128", issue = "35118")] }
+impl_from! { u32, u128, #[stable(feature = "i128", since = "1.26.0")] }
+impl_from! { u64, u128, #[stable(feature = "i128", since = "1.26.0")] }
 
 // Signed -> Signed
 impl_from! { i8, i16, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
 impl_from! { i8, i32, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
 impl_from! { i8, i64, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
-impl_from! { i8, i128, #[unstable(feature = "i128", issue = "35118")] }
+impl_from! { i8, i128, #[stable(feature = "i128", since = "1.26.0")] }
 impl_from! { i8, isize, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
 impl_from! { i16, i32, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
 impl_from! { i16, i64, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
-impl_from! { i16, i128, #[unstable(feature = "i128", issue = "35118")] }
+impl_from! { i16, i128, #[stable(feature = "i128", since = "1.26.0")] }
 impl_from! { i32, i64, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
-impl_from! { i32, i128, #[unstable(feature = "i128", issue = "35118")] }
-impl_from! { i64, i128, #[unstable(feature = "i128", issue = "35118")] }
+impl_from! { i32, i128, #[stable(feature = "i128", since = "1.26.0")] }
+impl_from! { i64, i128, #[stable(feature = "i128", since = "1.26.0")] }
 
 // Unsigned -> Signed
 impl_from! { u8, i16, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
 impl_from! { u8, i32, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
 impl_from! { u8, i64, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
-impl_from! { u8, i128, #[unstable(feature = "i128", issue = "35118")] }
+impl_from! { u8, i128, #[stable(feature = "i128", since = "1.26.0")] }
 impl_from! { u16, i32, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
 impl_from! { u16, i64, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
-impl_from! { u16, i128, #[unstable(feature = "i128", issue = "35118")] }
+impl_from! { u16, i128, #[stable(feature = "i128", since = "1.26.0")] }
 impl_from! { u32, i64, #[stable(feature = "lossless_int_conv", since = "1.5.0")] }
-impl_from! { u32, i128, #[unstable(feature = "i128", issue = "35118")] }
-impl_from! { u64, i128, #[unstable(feature = "i128", issue = "35118")] }
+impl_from! { u32, i128, #[stable(feature = "i128", since = "1.26.0")] }
+impl_from! { u64, i128, #[stable(feature = "i128", since = "1.26.0")] }
 
 // Note: integers can only be represented with full precision in a float if
 // they fit in the significand, which is 24 bits in f32 and 53 bits in f64.
diff --git a/src/libcore/num/u128.rs b/src/libcore/num/u128.rs
index 987ac3e0007..e8c783a1bb5 100644
--- a/src/libcore/num/u128.rs
+++ b/src/libcore/num/u128.rs
@@ -12,5 +12,5 @@
 //!
 //! *[See also the `u128` primitive type](../../std/primitive.u128.html).*
 
-#![unstable(feature = "i128", issue="35118")]
-uint_module! { u128, #[unstable(feature = "i128", issue="35118")] }
+#![stable(feature = "i128", since = "1.26.0")]
+uint_module! { u128, #[stable(feature = "i128", since="1.26.0")] }
diff --git a/src/libcore/tests/lib.rs b/src/libcore/tests/lib.rs
index 1c71669abb1..0b70f692403 100644
--- a/src/libcore/tests/lib.rs
+++ b/src/libcore/tests/lib.rs
@@ -23,7 +23,7 @@
 #![feature(fmt_internals)]
 #![feature(hashmap_internals)]
 #![feature(iterator_step_by)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![cfg_attr(stage0, feature(inclusive_range_syntax))]
 #![feature(iterator_try_fold)]
 #![feature(iterator_flatten)]
diff --git a/src/libproc_macro/lib.rs b/src/libproc_macro/lib.rs
index d6e679bad48..716a2cc6cbb 100644
--- a/src/libproc_macro/lib.rs
+++ b/src/libproc_macro/lib.rs
@@ -34,7 +34,7 @@
        test(no_crate_inject, attr(deny(warnings))),
        test(attr(allow(dead_code, deprecated, unused_variables, unused_mut))))]
 
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(rustc_private)]
 #![feature(staged_api)]
 #![feature(lang_items)]
diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs
index 1bb903c0627..e835d6192e5 100644
--- a/src/librustc/lib.rs
+++ b/src/librustc/lib.rs
@@ -52,8 +52,7 @@
 #![feature(entry_or_default)]
 #![feature(from_ref)]
 #![feature(fs_read_write)]
-#![feature(i128)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type, i128))]
 #![cfg_attr(stage0, feature(inclusive_range_syntax))]
 #![cfg_attr(windows, feature(libc))]
 #![feature(match_default_bindings)]
diff --git a/src/librustc_apfloat/lib.rs b/src/librustc_apfloat/lib.rs
index 565658804b0..2ee7bea8476 100644
--- a/src/librustc_apfloat/lib.rs
+++ b/src/librustc_apfloat/lib.rs
@@ -46,8 +46,8 @@
 #![deny(warnings)]
 #![forbid(unsafe_code)]
 
-#![feature(i128_type)]
 #![cfg_attr(stage0, feature(slice_patterns))]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(try_from)]
 
 // See librustc_cratesio_shim/Cargo.toml for a comment explaining this.
diff --git a/src/librustc_apfloat/tests/ieee.rs b/src/librustc_apfloat/tests/ieee.rs
index ff46ee79c31..627d79724b2 100644
--- a/src/librustc_apfloat/tests/ieee.rs
+++ b/src/librustc_apfloat/tests/ieee.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 
 #[macro_use]
 extern crate rustc_apfloat;
diff --git a/src/librustc_const_eval/lib.rs b/src/librustc_const_eval/lib.rs
index 2b0775e8695..2620448927d 100644
--- a/src/librustc_const_eval/lib.rs
+++ b/src/librustc_const_eval/lib.rs
@@ -23,7 +23,7 @@
 #![feature(box_patterns)]
 #![feature(box_syntax)]
 #![feature(macro_lifetime_matcher)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(from_ref)]
 
 extern crate arena;
diff --git a/src/librustc_const_math/lib.rs b/src/librustc_const_math/lib.rs
index 5555e727a95..7177e2818fb 100644
--- a/src/librustc_const_math/lib.rs
+++ b/src/librustc_const_math/lib.rs
@@ -19,8 +19,7 @@
       html_root_url = "https://doc.rust-lang.org/nightly/")]
 #![deny(warnings)]
 
-#![feature(i128)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type, i128))]
 
 extern crate rustc_apfloat;
 
diff --git a/src/librustc_data_structures/lib.rs b/src/librustc_data_structures/lib.rs
index ff869072871..378a06dd912 100644
--- a/src/librustc_data_structures/lib.rs
+++ b/src/librustc_data_structures/lib.rs
@@ -26,9 +26,8 @@
 #![feature(unboxed_closures)]
 #![feature(fn_traits)]
 #![feature(unsize)]
-#![feature(i128_type)]
-#![feature(i128)]
 #![cfg_attr(stage0, feature(conservative_impl_trait))]
+#![cfg_attr(stage0, feature(i128_type, i128))]
 #![feature(specialization)]
 #![feature(optin_builtin_traits)]
 #![feature(underscore_lifetimes)]
diff --git a/src/librustc_errors/lib.rs b/src/librustc_errors/lib.rs
index 1152c9c574e..37ae64cef57 100644
--- a/src/librustc_errors/lib.rs
+++ b/src/librustc_errors/lib.rs
@@ -18,7 +18,7 @@
 #![feature(range_contains)]
 #![cfg_attr(unix, feature(libc))]
 #![cfg_attr(stage0, feature(conservative_impl_trait))]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(optin_builtin_traits)]
 
 extern crate atty;
diff --git a/src/librustc_incremental/lib.rs b/src/librustc_incremental/lib.rs
index 6adb950fe4e..5a33f566e90 100644
--- a/src/librustc_incremental/lib.rs
+++ b/src/librustc_incremental/lib.rs
@@ -17,7 +17,7 @@
 
 #![cfg_attr(stage0, feature(conservative_impl_trait))]
 #![feature(fs_read_write)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![cfg_attr(stage0, feature(inclusive_range_syntax))]
 #![feature(specialization)]
 
diff --git a/src/librustc_lint/lib.rs b/src/librustc_lint/lib.rs
index 4639f7b2d28..d024adad9d0 100644
--- a/src/librustc_lint/lib.rs
+++ b/src/librustc_lint/lib.rs
@@ -27,7 +27,7 @@
 #![cfg_attr(test, feature(test))]
 #![feature(box_patterns)]
 #![feature(box_syntax)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(macro_vis_matcher)]
 #![feature(quote)]
 #![feature(rustc_diagnostic_macros)]
diff --git a/src/librustc_metadata/lib.rs b/src/librustc_metadata/lib.rs
index 902dd87c574..4af5ec9ae08 100644
--- a/src/librustc_metadata/lib.rs
+++ b/src/librustc_metadata/lib.rs
@@ -16,7 +16,7 @@
 #![feature(box_patterns)]
 #![cfg_attr(stage0, feature(conservative_impl_trait))]
 #![feature(fs_read_write)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(libc)]
 #![feature(macro_lifetime_matcher)]
 #![feature(proc_macro_internals)]
diff --git a/src/librustc_mir/lib.rs b/src/librustc_mir/lib.rs
index 750839f8b00..a1f096b2a38 100644
--- a/src/librustc_mir/lib.rs
+++ b/src/librustc_mir/lib.rs
@@ -27,7 +27,7 @@ Rust MIR: a lowered representation of Rust. Also: an experiment!
 #![feature(decl_macro)]
 #![feature(dyn_trait)]
 #![feature(fs_read_write)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![cfg_attr(stage0, feature(inclusive_range_syntax))]
 #![feature(macro_vis_matcher)]
 #![feature(match_default_bindings)]
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index 4d11960c320..97dcf081f8c 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -57,7 +57,7 @@ use syntax::ast::{FnDecl, ForeignItem, ForeignItemKind, GenericParam, Generics};
 use syntax::ast::{Item, ItemKind, ImplItem, ImplItemKind};
 use syntax::ast::{Label, Local, Mutability, Pat, PatKind, Path};
 use syntax::ast::{QSelf, TraitItemKind, TraitRef, Ty, TyKind};
-use syntax::feature_gate::{feature_err, emit_feature_err, GateIssue};
+use syntax::feature_gate::{feature_err, GateIssue};
 use syntax::parse::token;
 use syntax::ptr::P;
 
@@ -3172,17 +3172,6 @@ impl<'a> Resolver<'a> {
                        self.primitive_type_table.primitive_types
                            .contains_key(&path[0].node.name) => {
                 let prim = self.primitive_type_table.primitive_types[&path[0].node.name];
-                match prim {
-                    TyUint(UintTy::U128) | TyInt(IntTy::I128) => {
-                        if !self.session.features_untracked().i128_type {
-                            emit_feature_err(&self.session.parse_sess,
-                                                "i128_type", span, GateIssue::Language,
-                                                "128-bit type is unstable");
-
-                        }
-                    }
-                    _ => {}
-                }
                 PathResolution::with_unresolved_segments(Def::PrimTy(prim), path.len() - 1)
             }
             PathResult::Module(module) => PathResolution::new(module.def().unwrap()),
diff --git a/src/librustc_trans/lib.rs b/src/librustc_trans/lib.rs
index 38adc603628..bd33707b1c6 100644
--- a/src/librustc_trans/lib.rs
+++ b/src/librustc_trans/lib.rs
@@ -24,8 +24,7 @@
 #![feature(custom_attribute)]
 #![feature(fs_read_write)]
 #![allow(unused_attributes)]
-#![feature(i128_type)]
-#![feature(i128)]
+#![cfg_attr(stage0, feature(i128_type, i128))]
 #![cfg_attr(stage0, feature(inclusive_range_syntax))]
 #![feature(libc)]
 #![feature(quote)]
diff --git a/src/librustc_trans_utils/lib.rs b/src/librustc_trans_utils/lib.rs
index 9e4addd1ed1..99de124c6e1 100644
--- a/src/librustc_trans_utils/lib.rs
+++ b/src/librustc_trans_utils/lib.rs
@@ -21,7 +21,7 @@
 #![feature(box_syntax)]
 #![feature(custom_attribute)]
 #![allow(unused_attributes)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(quote)]
 #![feature(rustc_diagnostic_macros)]
 #![cfg_attr(stage0, feature(conservative_impl_trait))]
diff --git a/src/librustc_typeck/lib.rs b/src/librustc_typeck/lib.rs
index e466ef39234..8b3d5af3edd 100644
--- a/src/librustc_typeck/lib.rs
+++ b/src/librustc_typeck/lib.rs
@@ -86,7 +86,7 @@ This API is completely unstable and subject to change.
 #![feature(refcell_replace_swap)]
 #![feature(rustc_diagnostic_macros)]
 #![feature(slice_patterns)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![cfg_attr(stage0, feature(never_type))]
 
 #[macro_use] extern crate log;
diff --git a/src/libserialize/lib.rs b/src/libserialize/lib.rs
index 2e354252c15..ee952523462 100644
--- a/src/libserialize/lib.rs
+++ b/src/libserialize/lib.rs
@@ -23,7 +23,7 @@ Core encoding and decoding interfaces.
 
 #![feature(box_syntax)]
 #![feature(core_intrinsics)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(specialization)]
 #![cfg_attr(test, feature(test))]
 
diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs
index 0b06c5d4d65..93996868f16 100644
--- a/src/libstd/lib.rs
+++ b/src/libstd/lib.rs
@@ -269,8 +269,7 @@
 #![feature(generic_param_attrs)]
 #![feature(hashmap_internals)]
 #![feature(heap_api)]
-#![feature(i128)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type, i128))]
 #![feature(int_error_internals)]
 #![feature(integer_atomics)]
 #![feature(into_cow)]
@@ -435,7 +434,7 @@ pub use core::i16;
 pub use core::i32;
 #[stable(feature = "rust1", since = "1.0.0")]
 pub use core::i64;
-#[unstable(feature = "i128", issue = "35118")]
+#[stable(feature = "i128", since = "1.26.0")]
 pub use core::i128;
 #[stable(feature = "rust1", since = "1.0.0")]
 pub use core::usize;
@@ -465,7 +464,7 @@ pub use alloc::string;
 pub use alloc::vec;
 #[stable(feature = "rust1", since = "1.0.0")]
 pub use std_unicode::char;
-#[unstable(feature = "i128", issue = "35118")]
+#[stable(feature = "i128", since = "1.26.0")]
 pub use core::u128;
 
 pub mod f32;
diff --git a/src/libstd/net/ip.rs b/src/libstd/net/ip.rs
index 031fae6d59b..25fa9095536 100644
--- a/src/libstd/net/ip.rs
+++ b/src/libstd/net/ip.rs
@@ -1355,7 +1355,7 @@ impl FromInner<c::in6_addr> for Ipv6Addr {
     }
 }
 
-#[unstable(feature = "i128", issue = "35118")]
+#[stable(feature = "i128", since = "1.26.0")]
 impl From<Ipv6Addr> for u128 {
     fn from(ip: Ipv6Addr) -> u128 {
         let ip = ip.segments();
@@ -1364,7 +1364,7 @@ impl From<Ipv6Addr> for u128 {
             ((ip[6] as u128) << 16) + (ip[7] as u128)
     }
 }
-#[unstable(feature = "i128", issue = "35118")]
+#[stable(feature = "i128", since = "1.26.0")]
 impl From<u128> for Ipv6Addr {
     fn from(ip: u128) -> Ipv6Addr {
         Ipv6Addr::new(
diff --git a/src/libstd/num.rs b/src/libstd/num.rs
index 6f537fd5c50..547b8c7c925 100644
--- a/src/libstd/num.rs
+++ b/src/libstd/num.rs
@@ -24,14 +24,9 @@ pub use core::num::Wrapping;
 #[unstable(feature = "nonzero", issue = "49137")]
 pub use core::num::{
     NonZeroU8, NonZeroI8, NonZeroU16, NonZeroI16, NonZeroU32, NonZeroI32,
-    NonZeroU64, NonZeroI64, NonZeroUsize, NonZeroIsize,
+    NonZeroU64, NonZeroI64, NonZeroU128, NonZeroI128, NonZeroUsize, NonZeroIsize,
 };
 
-// Change this to `#[unstable(feature = "i128", issue = "35118")]`
-// if other NonZero* integer types are stabilizied before 128-bit integers
-#[unstable(feature = "nonzero", issue = "49137")]
-pub use core::num::{NonZeroU128, NonZeroI128};
-
 #[cfg(test)] use fmt;
 #[cfg(test)] use ops::{Add, Sub, Mul, Div, Rem};
 
diff --git a/src/libstd/primitive_docs.rs b/src/libstd/primitive_docs.rs
index e6e6be2e453..ce4bbfffc2e 100644
--- a/src/libstd/primitive_docs.rs
+++ b/src/libstd/primitive_docs.rs
@@ -751,7 +751,7 @@ mod prim_i64 { }
 /// The 128-bit signed integer type.
 ///
 /// *[See also the `std::i128` module](i128/index.html).*
-#[unstable(feature = "i128", issue="35118")]
+#[stable(feature = "i128", since="1.26.0")]
 mod prim_i128 { }
 
 #[doc(primitive = "u8")]
@@ -791,7 +791,7 @@ mod prim_u64 { }
 /// The 128-bit unsigned integer type.
 ///
 /// *[See also the `std::u128` module](u128/index.html).*
-#[unstable(feature = "i128", issue="35118")]
+#[stable(feature = "i128", since="1.26.0")]
 mod prim_u128 { }
 
 #[doc(primitive = "isize")]
diff --git a/src/libsyntax/diagnostic_list.rs b/src/libsyntax/diagnostic_list.rs
index 1f87c1b94c5..bb7988e64bc 100644
--- a/src/libsyntax/diagnostic_list.rs
+++ b/src/libsyntax/diagnostic_list.rs
@@ -250,7 +250,10 @@ An unstable feature was used.
 Erroneous code example:
 
 ```compile_fail,E658
-let x = ::std::u128::MAX; // error: use of unstable library feature 'i128'
+#[repr(u128)] // error: use of unstable library feature 'repr128'
+enum Foo {
+    Bar(u64),
+}
 ```
 
 If you're using a stable or a beta version of rustc, you won't be able to use
@@ -261,10 +264,11 @@ If you're using a nightly version of rustc, just add the corresponding feature
 to be able to use it:
 
 ```
-#![feature(i128)]
+#![feature(repr128)]
 
-fn main() {
-    let x = ::std::u128::MAX; // ok!
+#[repr(u128)] // ok!
+enum Foo {
+    Bar(u64),
 }
 ```
 "##,
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs
index 1bb369b551d..4e3c77d5e46 100644
--- a/src/libsyntax/feature_gate.rs
+++ b/src/libsyntax/feature_gate.rs
@@ -303,9 +303,6 @@ declare_features! (
     // `extern "ptx-*" fn()`
     (active, abi_ptx, "1.15.0", None, None),
 
-    // The `i128` type
-    (active, i128_type, "1.16.0", Some(35118), None),
-
     // The `repr(i128)` annotation for enums
     (active, repr128, "1.16.0", Some(35118), None),
 
@@ -564,6 +561,8 @@ declare_features! (
     (accepted, universal_impl_trait, "1.26.0", Some(34511), None),
     // Allows `impl Trait` in function return types.
     (accepted, conservative_impl_trait, "1.26.0", Some(34511), None),
+    // The `i128` type
+    (accepted, i128_type, "1.26.0", Some(35118), None),
 );
 
 // If you change this, please modify src/doc/unstable-book as well. You must
@@ -1641,18 +1640,6 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
                                   e.span,
                                   "yield syntax is experimental");
             }
-            ast::ExprKind::Lit(ref lit) => {
-                if let ast::LitKind::Int(_, ref ty) = lit.node {
-                    match *ty {
-                        ast::LitIntType::Signed(ast::IntTy::I128) |
-                        ast::LitIntType::Unsigned(ast::UintTy::U128) => {
-                            gate_feature_post!(&self, i128_type, e.span,
-                                               "128-bit integers are not stable");
-                        }
-                        _ => {}
-                    }
-                }
-            }
             ast::ExprKind::Catch(_) => {
                 gate_feature_post!(&self, catch_expr, e.span, "`catch` expression is experimental");
             }
diff --git a/src/libsyntax/lib.rs b/src/libsyntax/lib.rs
index 74f1ee373ec..2218b396685 100644
--- a/src/libsyntax/lib.rs
+++ b/src/libsyntax/lib.rs
@@ -24,7 +24,7 @@
 #![feature(rustc_diagnostic_macros)]
 #![feature(match_default_bindings)]
 #![feature(non_exhaustive)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(const_atomic_usize_new)]
 #![feature(rustc_attrs)]
 
diff --git a/src/libsyntax_pos/lib.rs b/src/libsyntax_pos/lib.rs
index 5a7b7e9ceca..eb345200f41 100644
--- a/src/libsyntax_pos/lib.rs
+++ b/src/libsyntax_pos/lib.rs
@@ -21,7 +21,7 @@
 
 #![feature(const_fn)]
 #![feature(custom_attribute)]
-#![feature(i128_type)]
+#![cfg_attr(stage0, feature(i128_type))]
 #![feature(optin_builtin_traits)]
 #![allow(unused_attributes)]
 #![feature(specialization)]
diff --git a/src/test/codegen/unchecked-float-casts.rs b/src/test/codegen/unchecked-float-casts.rs
index c2fc2966170..87ebaaeec32 100644
--- a/src/test/codegen/unchecked-float-casts.rs
+++ b/src/test/codegen/unchecked-float-casts.rs
@@ -14,7 +14,6 @@
 // -Z saturating-float-casts is not enabled.
 
 #![crate_type = "lib"]
-#![feature(i128_type)]
 
 // CHECK-LABEL: @f32_to_u32
 #[no_mangle]
diff --git a/src/test/compile-fail/i128-feature-libs.rs b/src/test/compile-fail/i128-feature-libs.rs
deleted file mode 100644
index b29ac50fd37..00000000000
--- a/src/test/compile-fail/i128-feature-libs.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-fn testl() {
-    ::std::u128::MAX; //~ ERROR use of unstable library feature 'i128'
-}
-
-fn testl2() {
-    ::std::i128::MAX; //~ ERROR use of unstable library feature 'i128'
-}
diff --git a/src/test/mir-opt/lower_128bit_debug_test.rs b/src/test/mir-opt/lower_128bit_debug_test.rs
index 1752445a141..d7586b1aa4b 100644
--- a/src/test/mir-opt/lower_128bit_debug_test.rs
+++ b/src/test/mir-opt/lower_128bit_debug_test.rs
@@ -15,7 +15,6 @@
 
 // compile-flags: -Z lower_128bit_ops=yes -C debug_assertions=yes
 
-#![feature(i128_type)]
 #![feature(const_fn)]
 
 static TEST_SIGNED: i128 = const_signed(-222);
diff --git a/src/test/mir-opt/lower_128bit_test.rs b/src/test/mir-opt/lower_128bit_test.rs
index 4058eaef9b0..341682debeb 100644
--- a/src/test/mir-opt/lower_128bit_test.rs
+++ b/src/test/mir-opt/lower_128bit_test.rs
@@ -15,7 +15,6 @@
 
 // compile-flags: -Z lower_128bit_ops=yes -C debug_assertions=no
 
-#![feature(i128_type)]
 #![feature(const_fn)]
 
 static TEST_SIGNED: i128 = const_signed(-222);
diff --git a/src/test/run-pass/float-int-invalid-const-cast.rs b/src/test/run-pass/float-int-invalid-const-cast.rs
index d44f78922c7..f84432abbfa 100644
--- a/src/test/run-pass/float-int-invalid-const-cast.rs
+++ b/src/test/run-pass/float-int-invalid-const-cast.rs
@@ -10,7 +10,6 @@
 
 // ignore-emscripten no i128 support
 
-#![feature(i128_type)]
 #![deny(const_err)]
 
 use std::{f32, f64};
diff --git a/src/test/run-pass/i128-ffi.rs b/src/test/run-pass/i128-ffi.rs
index d989210dd71..edf278cbf64 100644
--- a/src/test/run-pass/i128-ffi.rs
+++ b/src/test/run-pass/i128-ffi.rs
@@ -15,8 +15,6 @@
 // ignore-windows
 // ignore-32bit
 
-#![feature(i128_type)]
-
 #[link(name = "rust_test_helpers", kind = "static")]
 extern "C" {
     fn identity(f: u128) -> u128;
diff --git a/src/test/run-pass/i128.rs b/src/test/run-pass/i128.rs
index c3e43c92590..baf3b339984 100644
--- a/src/test/run-pass/i128.rs
+++ b/src/test/run-pass/i128.rs
@@ -12,7 +12,7 @@
 
 // compile-flags: -Z borrowck=compare
 
-#![feature(i128_type, test)]
+#![feature(test)]
 
 extern crate test;
 use test::black_box as b;
diff --git a/src/test/run-pass/intrinsics-integer.rs b/src/test/run-pass/intrinsics-integer.rs
index cdfad51e648..7a8ff1befc7 100644
--- a/src/test/run-pass/intrinsics-integer.rs
+++ b/src/test/run-pass/intrinsics-integer.rs
@@ -10,7 +10,7 @@
 
 // ignore-emscripten no i128 support
 
-#![feature(intrinsics, i128_type)]
+#![feature(intrinsics)]
 
 mod rusti {
     extern "rust-intrinsic" {
diff --git a/src/test/run-pass/issue-38763.rs b/src/test/run-pass/issue-38763.rs
index 01cc8265a39..e038062ff9a 100644
--- a/src/test/run-pass/issue-38763.rs
+++ b/src/test/run-pass/issue-38763.rs
@@ -10,8 +10,6 @@
 
 // ignore-emscripten
 
-#![feature(i128_type)]
-
 #[repr(C)]
 pub struct Foo(i128);
 
diff --git a/src/test/run-pass/issue-38987.rs b/src/test/run-pass/issue-38987.rs
index a513476d4a3..31a3b7233d8 100644
--- a/src/test/run-pass/issue-38987.rs
+++ b/src/test/run-pass/issue-38987.rs
@@ -7,7 +7,6 @@
 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
-#![feature(i128_type)]
 
 fn main() {
     let _ = -0x8000_0000_0000_0000_0000_0000_0000_0000i128;
diff --git a/src/test/run-pass/next-power-of-two-overflow-debug.rs b/src/test/run-pass/next-power-of-two-overflow-debug.rs
index 599c6dfd31d..2135b3f8764 100644
--- a/src/test/run-pass/next-power-of-two-overflow-debug.rs
+++ b/src/test/run-pass/next-power-of-two-overflow-debug.rs
@@ -12,8 +12,6 @@
 // ignore-wasm32-bare compiled with panic=abort by default
 // ignore-emscripten dies with an LLVM error
 
-#![feature(i128_type)]
-
 use std::panic;
 
 fn main() {
diff --git a/src/test/run-pass/next-power-of-two-overflow-ndebug.rs b/src/test/run-pass/next-power-of-two-overflow-ndebug.rs
index f2312b70be6..b05c1863d90 100644
--- a/src/test/run-pass/next-power-of-two-overflow-ndebug.rs
+++ b/src/test/run-pass/next-power-of-two-overflow-ndebug.rs
@@ -11,8 +11,6 @@
 // compile-flags: -C debug_assertions=no
 // ignore-emscripten dies with an LLVM error
 
-#![feature(i128_type)]
-
 fn main() {
     for i in 129..256 {
         assert_eq!((i as u8).next_power_of_two(), 0);
diff --git a/src/test/run-pass/saturating-float-casts.rs b/src/test/run-pass/saturating-float-casts.rs
index c8fa49c62a0..ad3b4b17259 100644
--- a/src/test/run-pass/saturating-float-casts.rs
+++ b/src/test/run-pass/saturating-float-casts.rs
@@ -11,7 +11,7 @@
 // Tests saturating float->int casts. See u128-as-f32.rs for the opposite direction.
 // compile-flags: -Z saturating-float-casts
 
-#![feature(test, i128, i128_type, stmt_expr_attributes)]
+#![feature(test, stmt_expr_attributes)]
 #![deny(overflowing_literals)]
 extern crate test;
 
diff --git a/src/test/run-pass/u128-as-f32.rs b/src/test/run-pass/u128-as-f32.rs
index 117e520155f..2848fb2d51a 100644
--- a/src/test/run-pass/u128-as-f32.rs
+++ b/src/test/run-pass/u128-as-f32.rs
@@ -10,7 +10,7 @@
 
 // ignore-emscripten u128 not supported
 
-#![feature(test, i128, i128_type)]
+#![feature(test)]
 #![deny(overflowing_literals)]
 extern crate test;
 
diff --git a/src/test/run-pass/u128.rs b/src/test/run-pass/u128.rs
index ebd43a86033..d649b3b74d3 100644
--- a/src/test/run-pass/u128.rs
+++ b/src/test/run-pass/u128.rs
@@ -12,7 +12,7 @@
 
 // compile-flags: -Z borrowck=compare
 
-#![feature(i128_type, test)]
+#![feature(test)]
 
 extern crate test;
 use test::black_box as b;
diff --git a/src/test/ui/error-codes/E0658.rs b/src/test/ui/error-codes/E0658.rs
index d30068eb1fe..dcfa25e528a 100644
--- a/src/test/ui/error-codes/E0658.rs
+++ b/src/test/ui/error-codes/E0658.rs
@@ -8,6 +8,9 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-fn main() {
-    let _ = ::std::u128::MAX; //~ ERROR E0658
+#[repr(u128)]
+enum Foo { //~ ERROR E0658
+    Bar(u64),
 }
+
+fn main() {}
diff --git a/src/test/ui/error-codes/E0658.stderr b/src/test/ui/error-codes/E0658.stderr
index 5be05600ee5..b338b384a11 100644
--- a/src/test/ui/error-codes/E0658.stderr
+++ b/src/test/ui/error-codes/E0658.stderr
@@ -1,10 +1,12 @@
-error[E0658]: use of unstable library feature 'i128' (see issue #35118)
-  --> $DIR/E0658.rs:12:13
+error[E0658]: repr with 128-bit type is unstable (see issue #35118)
+  --> $DIR/E0658.rs:12:1
    |
-LL |     let _ = ::std::u128::MAX; //~ ERROR E0658
-   |             ^^^^^^^^^^^^^^^^
+LL | / enum Foo { //~ ERROR E0658
+LL | |     Bar(u64),
+LL | | }
+   | |_^
    |
-   = help: add #![feature(i128)] to the crate attributes to enable
+   = help: add #![feature(repr128)] to the crate attributes to enable
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/feature-gate-i128_type.rs b/src/test/ui/feature-gate-i128_type.rs
deleted file mode 100644
index ddb49a3e5d9..00000000000
--- a/src/test/ui/feature-gate-i128_type.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-fn test2() {
-    0i128; //~ ERROR 128-bit integers are not stable
-}
-
-fn test2_2() {
-    0u128; //~ ERROR 128-bit integers are not stable
-}
-
diff --git a/src/test/ui/feature-gate-i128_type.stderr b/src/test/ui/feature-gate-i128_type.stderr
deleted file mode 100644
index eb3b29f4f55..00000000000
--- a/src/test/ui/feature-gate-i128_type.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0658]: 128-bit integers are not stable (see issue #35118)
-  --> $DIR/feature-gate-i128_type.rs:12:5
-   |
-LL |     0i128; //~ ERROR 128-bit integers are not stable
-   |     ^^^^^
-   |
-   = help: add #![feature(i128_type)] to the crate attributes to enable
-
-error[E0658]: 128-bit integers are not stable (see issue #35118)
-  --> $DIR/feature-gate-i128_type.rs:16:5
-   |
-LL |     0u128; //~ ERROR 128-bit integers are not stable
-   |     ^^^^^
-   |
-   = help: add #![feature(i128_type)] to the crate attributes to enable
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/feature-gate-i128_type2.rs b/src/test/ui/feature-gate-i128_type2.rs
deleted file mode 100644
index 8a7d316ed83..00000000000
--- a/src/test/ui/feature-gate-i128_type2.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// gate-test-i128_type
-
-fn test1() -> i128 { //~ ERROR 128-bit type is unstable
-    0
-}
-
-fn test1_2() -> u128 { //~ ERROR 128-bit type is unstable
-    0
-}
-
-fn test3() {
-    let x: i128 = 0; //~ ERROR 128-bit type is unstable
-}
-
-fn test3_2() {
-    let x: u128 = 0; //~ ERROR 128-bit type is unstable
-}
-
-#[repr(u128)]
-enum A { //~ ERROR 128-bit type is unstable
-    A(u64)
-}
-
-fn main() {}
diff --git a/src/test/ui/feature-gate-i128_type2.stderr b/src/test/ui/feature-gate-i128_type2.stderr
deleted file mode 100644
index 23d4d6c98d9..00000000000
--- a/src/test/ui/feature-gate-i128_type2.stderr
+++ /dev/null
@@ -1,45 +0,0 @@
-error[E0658]: 128-bit type is unstable (see issue #35118)
-  --> $DIR/feature-gate-i128_type2.rs:13:15
-   |
-LL | fn test1() -> i128 { //~ ERROR 128-bit type is unstable
-   |               ^^^^
-   |
-   = help: add #![feature(i128_type)] to the crate attributes to enable
-
-error[E0658]: 128-bit type is unstable (see issue #35118)
-  --> $DIR/feature-gate-i128_type2.rs:17:17
-   |
-LL | fn test1_2() -> u128 { //~ ERROR 128-bit type is unstable
-   |                 ^^^^
-   |
-   = help: add #![feature(i128_type)] to the crate attributes to enable
-
-error[E0658]: 128-bit type is unstable (see issue #35118)
-  --> $DIR/feature-gate-i128_type2.rs:22:12
-   |
-LL |     let x: i128 = 0; //~ ERROR 128-bit type is unstable
-   |            ^^^^
-   |
-   = help: add #![feature(i128_type)] to the crate attributes to enable
-
-error[E0658]: 128-bit type is unstable (see issue #35118)
-  --> $DIR/feature-gate-i128_type2.rs:26:12
-   |
-LL |     let x: u128 = 0; //~ ERROR 128-bit type is unstable
-   |            ^^^^
-   |
-   = help: add #![feature(i128_type)] to the crate attributes to enable
-
-error[E0658]: repr with 128-bit type is unstable (see issue #35118)
-  --> $DIR/feature-gate-i128_type2.rs:30:1
-   |
-LL | / enum A { //~ ERROR 128-bit type is unstable
-LL | |     A(u64)
-LL | | }
-   | |_^
-   |
-   = help: add #![feature(repr128)] to the crate attributes to enable
-
-error: aborting due to 5 previous errors
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/lint-ctypes.rs b/src/test/ui/lint-ctypes.rs
index 77cb1ef0f51..85957831653 100644
--- a/src/test/ui/lint-ctypes.rs
+++ b/src/test/ui/lint-ctypes.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 #![deny(improper_ctypes)]
-#![feature(libc, i128_type, repr_transparent)]
+#![feature(libc, repr_transparent)]
 
 extern crate libc;
 
diff --git a/src/test/ui/lint/type-overflow.rs b/src/test/ui/lint/type-overflow.rs
index 495989587e5..30e6fb2883b 100644
--- a/src/test/ui/lint/type-overflow.rs
+++ b/src/test/ui/lint/type-overflow.rs
@@ -10,8 +10,6 @@
 
 // must-compile-successfully
 
-#![feature(i128_type)]
-
 fn main() {
     let error = 255i8; //~WARNING literal out of range for i8
 
diff --git a/src/test/ui/lint/type-overflow.stderr b/src/test/ui/lint/type-overflow.stderr
index d3fcb1335e2..6f5d3d07aea 100644
--- a/src/test/ui/lint/type-overflow.stderr
+++ b/src/test/ui/lint/type-overflow.stderr
@@ -1,5 +1,5 @@
 warning: literal out of range for i8
-  --> $DIR/type-overflow.rs:16:17
+  --> $DIR/type-overflow.rs:14:17
    |
 LL |     let error = 255i8; //~WARNING literal out of range for i8
    |                 ^^^^^
@@ -7,7 +7,7 @@ LL |     let error = 255i8; //~WARNING literal out of range for i8
    = note: #[warn(overflowing_literals)] on by default
 
 warning: literal out of range for i8
-  --> $DIR/type-overflow.rs:21:16
+  --> $DIR/type-overflow.rs:19:16
    |
 LL |     let fail = 0b1000_0001i8; //~WARNING literal out of range for i8
    |                ^^^^^^^^^^^^^ help: consider using `u8` instead: `0b1000_0001u8`
@@ -15,7 +15,7 @@ LL |     let fail = 0b1000_0001i8; //~WARNING literal out of range for i8
    = note: the literal `0b1000_0001i8` (decimal `129`) does not fit into an `i8` and will become `-127i8`
 
 warning: literal out of range for i64
-  --> $DIR/type-overflow.rs:23:16
+  --> $DIR/type-overflow.rs:21:16
    |
 LL |     let fail = 0x8000_0000_0000_0000i64; //~WARNING literal out of range for i64
    |                ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `u64` instead: `0x8000_0000_0000_0000u64`
@@ -23,7 +23,7 @@ LL |     let fail = 0x8000_0000_0000_0000i64; //~WARNING literal out of range fo
    = note: the literal `0x8000_0000_0000_0000i64` (decimal `9223372036854775808`) does not fit into an `i64` and will become `-9223372036854775808i64`
 
 warning: literal out of range for u32
-  --> $DIR/type-overflow.rs:25:16
+  --> $DIR/type-overflow.rs:23:16
    |
 LL |     let fail = 0x1_FFFF_FFFFu32; //~WARNING literal out of range for u32
    |                ^^^^^^^^^^^^^^^^ help: consider using `u64` instead: `0x1_FFFF_FFFFu64`
@@ -31,7 +31,7 @@ LL |     let fail = 0x1_FFFF_FFFFu32; //~WARNING literal out of range for u32
    = note: the literal `0x1_FFFF_FFFFu32` (decimal `8589934591`) does not fit into an `u32` and will become `4294967295u32`
 
 warning: literal out of range for i128
-  --> $DIR/type-overflow.rs:27:22
+  --> $DIR/type-overflow.rs:25:22
    |
 LL |     let fail: i128 = 0x8000_0000_0000_0000_0000_0000_0000_0000;
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -40,7 +40,7 @@ LL |     let fail: i128 = 0x8000_0000_0000_0000_0000_0000_0000_0000;
    = help: consider using `u128` instead
 
 warning: literal out of range for i32
-  --> $DIR/type-overflow.rs:30:16
+  --> $DIR/type-overflow.rs:28:16
    |
 LL |     let fail = 0x8FFF_FFFF_FFFF_FFFE; //~WARNING literal out of range for i32
    |                ^^^^^^^^^^^^^^^^^^^^^
@@ -49,7 +49,7 @@ LL |     let fail = 0x8FFF_FFFF_FFFF_FFFE; //~WARNING literal out of range for i
    = help: consider using `i128` instead
 
 warning: literal out of range for i8
-  --> $DIR/type-overflow.rs:32:17
+  --> $DIR/type-overflow.rs:30:17
    |
 LL |     let fail = -0b1111_1111i8; //~WARNING literal out of range for i8
    |                 ^^^^^^^^^^^^^ help: consider using `i16` instead: `0b1111_1111i16`