From 472d798dc1c0a7804b54c67b485e134fe097a57e Mon Sep 17 00:00:00 2001 From: Jed Davis Date: Sun, 20 Oct 2013 11:13:41 -0700 Subject: [PATCH] Work around const_eval issues by changing signed integer `min_value`s. Otherwise, run-pass/deriving-primitive.rs breaks on 32-bit platforms, because `int::min_value` is `0xffffffff7fffffff` when evaluated for the discriminant declaration. --- src/libstd/num/int_macros.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libstd/num/int_macros.rs b/src/libstd/num/int_macros.rs index 694e5e7f6bf..ba1a7a4f912 100644 --- a/src/libstd/num/int_macros.rs +++ b/src/libstd/num/int_macros.rs @@ -29,7 +29,8 @@ pub static bits : uint = $bits; pub static bytes : uint = ($bits / 8); pub static min_value: $T = (-1 as $T) << (bits - 1); -pub static max_value: $T = min_value - 1 as $T; +// FIXME(#9837): Compute min_value like this so the high bits that shouldn't exist are 0. +pub static max_value: $T = !min_value; impl CheckedDiv for $T { #[inline]