1. 13 11月, 2018 6 次提交
    • S
      Adjust documentation · 79ba84fa
      scalexm 提交于
      79ba84fa
    • S
      Pretty print quantified goals and clauses · eacebf24
      scalexm 提交于
      eacebf24
    • S
      64aac8d4
    • B
      Auto merge of #55589 - oli-obk:min_length_💣, r=pnkfelix · 485397e4
      bors 提交于
      Add `VariantIdx` type and use instead of `usize`
      485397e4
    • B
      Auto merge of #55052 - newpavlov:patch-2, r=alexcrichton · c4371c85
      bors 提交于
      Use read_unaligned instead of read in transmute_copy
      
      Closes: #55044
      
      This change could result in performance regression on non-x86 platforms. (but it also can fix some of UB which lurks in existing programs) An alternative would be to update `transmute_copy` documentation with alignment requirements.
      c4371c85
    • B
      Auto merge of #55278 - Centril:constification-1, r=alexcrichton · 65204a97
      bors 提交于
      Minor standard library constification
      
      This PR makes some bits of the standard library into `const fn`s.
      I've tried to be as aggressive as I possibly could in the constification.
      The list is rather small due to how restrictive `const fn` is at the moment.
      
      r? @oli-obk cc @rust-lang/libs
      
      Stable public APIs affected:
      + [x] `Cell::as_ptr`
      + [x] `UnsafeCell::get`
      + [x] `char::is_ascii`
      + [x] `iter::empty`
      + [x] `ManuallyDrop::{new, into_inner}`
      + [x] `RangeInclusive::{start, end}`
      + [x] `NonNull::as_ptr`
      + [x] `{[T], str}::as_ptr`
      + [x] `Duration::{as_secs, subsec_millis, subsec_micros, subsec_nanos}`
      + [x] `CStr::as_ptr`
      + [x] `Ipv4Addr::is_unspecified`
      + [x] `Ipv6Addr::new`
      + [x] `Ipv6Addr::octets`
      
      Unstable public APIs affected:
      + [x] `Duration::{as_millis, as_micros, as_nanos, as_float_secs}`
      + [x] `Wrapping::{count_ones, count_zeros, trailing_zeros, rotate_left, rotate_right, swap_bytes, reverse_bits, from_be, from_le, to_be, to_le, leading_zeros, is_positive, is_negative, leading_zeros}`
      + [x] `core::convert::identity`
      
      --------------------------
      
      ## Removed from list in first pass:
      
      Stable public APIs affected:
      + [ ] `BTree{Map, Set}::{len, is_empty}`
      + [ ] `VecDeque::is_empty`
      + [ ] `String::{is_empty, len}`
      + [ ] `FromUtf8Error::utf8_error`
      + [ ] `Vec<T>::{is_empty, len}`
      + [ ] `Layout::size`
      + [ ] `DecodeUtf16Error::unpaired_surrogate`
      + [ ] `core::fmt::{fill, width, precision, sign_plus, sign_minus, alternate, sign_aware_zero_pad}`
      + [ ] `panic::Location::{file, line, column}`
      + [ ] `{ChunksExact, RChunksExact}::remainder`
      + [ ] `Utf8Error::valid_up_to`
      + [ ] `VacantEntry::key`
      + [ ] `NulError::nul_position`
      + [ ] `IntoStringError::utf8_error`
      + [ ] `IntoInnerError::error`
      + [ ] `io::Chain::get_ref`
      + [ ] `io::Take::{limit, get_ref}`
      + [ ] `SocketAddrV6::{flowinfo, scope_id}`
      + [ ] `PrefixComponent::{kind, as_os_str}`
      + [ ] `Path::{ancestors, display}`
      + [ ] `WaitTimeoutResult::timed_out`
      + [ ] `Receiver::{iter, try_iter}`
      + [ ] `thread::JoinHandle::thread`
      + [ ] `SystemTimeError::duration`
      
      Unstable public APIs affected:
      + [ ] `core::fmt::Arguments::new_v1`
      + [ ] `core::fmt::Arguments::new_v1_formatted`
      + [ ] `Pin::{get_ref, into_ref}`
      + [ ] `Utf8Lossy::chunks`
      + [ ] `LocalWaker::as_waker`
      + [ ] `panic::PanicInfo::{internal_constructor, message, location}`
      + [ ] `panic::Location::{internal_constructor }`
      
      ## Removed from list in 2nd pass:
      
      Stable public APIs affected:
      + [ ] `LinkedList::{new, iter, is_empty, len}`
      + [ ] `mem::forget`
      + [ ] `Cursor::{new, get_ref, position}`
      + [ ] `io::{empty, repeat, sink}`
      + [ ] `PoisonError::new`
      + [ ] `thread::Builder::new`
      + [ ] `process::Stdio::{piped, inherit, null}`
      
      Unstable public APIs affected:
      + [ ] `io::Initializer::{zeroing, should_initialize}`
      65204a97
  2. 12 11月, 2018 16 次提交
    • O
      Deduplicate field and variant visitor methods · d46a2078
      Oliver Scherer 提交于
      d46a2078
    • O
      miri-engine value visitor update to VariantIdx · b174b0b9
      Oliver Scherer 提交于
      b174b0b9
    • O
      4a9ed3f2
    • O
      Use IndexVec instead of `usize` in librustc · 740fb0cb
      Oliver Scherer 提交于
      740fb0cb
    • O
      Shrink some internal enums · 19ae2b94
      Oliver Scherer 提交于
      19ae2b94
    • O
      Merge an assert + cast into a `try_into` call · 6fc8779b
      Oliver Scherer 提交于
      6fc8779b
    • B
      Auto merge of #55604 - nnethercote:avoid-associated_items-Box, r=nnethercote · 0195812a
      bors 提交于
      Avoid the Box in `TyCtxt::associated_items`.
      
      This reduces instruction counts on `packed_simd` by 2%.
      
      r? @nikomatsakis
      0195812a
    • N
      Avoid the Box in `TyCtxt::associated_items`. · e927a244
      Niko Matsakis 提交于
      This reduces instruction counts on packed_simd by 2%.
      e927a244
    • B
      Auto merge of #55701 - tromey:ice-fix, r=matthewjasper · d1d79ae3
      bors 提交于
      Fix emission of niche-filling discriminant values
      
      Bug #55606 points out a regression introduced by #54004; namely that
      an assertion can erroneously fire when a niche-filling discriminant
      value is emitted.
      
      This fixes the bug by removing the assertion, and furthermore by
      arranging for the discriminant value to be masked according to the
      size of the niche.  This makes handling the discriminant a bit simpler
      for debuggers.
      
      The test case is from Jonathan Turner.
      
      Closes #55606
      d1d79ae3
    • B
      Auto merge of #55525 - nnethercote:MatcherPos-stack-SmallVec, r=nnethercote · d8f4c9ff
      bors 提交于
      Make `MatcherPos::stack` a `SmallVec`.
      
      This avoids some allocations.
      
      This seems like a trivial change, but the compiler rejects it:
      ```
         Compiling syntax v0.0.0 (/home/njn/moz/rust1/src/libsyntax)
      error[E0597]: `initial` does not live long enough=========>           ] 89/110: syntax
         --> libsyntax/ext/tt/macro_parser.rs:647:57
          |
      647 |     let mut cur_items = smallvec![MatcherPosHandle::Ref(&mut initial)];
          |                                                         ^^^^^^^^^^^^ borrowed value does not live long enough
      ...
      762 | }
          | -
          | |
          | `initial` dropped here while still borrowed
          | borrow later used here, when `initial` is dropped
      
      error: aborting due to previous error
      ```
      This is either a compiler bug, or there's some subtle thing I don't understand. The lifetimes sure seem straightforward: `initial` is declared, and then `cur_items` is declared immediately afterward, and it uses a reference to `initial`. The error message makes it sound like the compiler is dropping the variables in the wrong order.
      
      r? @nikomatsakis, any idea what the problem is?
      d8f4c9ff
    • N
      Make `MatcherPos::stack` a `SmallVec`. · 68e76dca
      Niko Matsakis 提交于
      This avoids some allocations.
      68e76dca
    • B
      Auto merge of #55698 - nikic:remove-llvm-4-support, r=alexcrichton · 775eab58
      bors 提交于
      Remove support for building against LLVM 4
      
      With emscripten removed in #55626, we no longer need to support building against LLVM 4.
      775eab58
    • B
      Auto merge of #55660 - alexcrichton:cleanup-alloc-system, r=dtolnay,SimonSapin · ca79ecd6
      bors 提交于
      Remove the `alloc_system` crate
      
      In what's hopefully one of the final nails in the coffin of the "old allocator story of yore" this PR deletes the `alloc_system` crate and all traces of it from the compiler. The compiler no longer needs to inject allocator crates anywhere and the `alloc_system` crate has no real reason to exist outside the standard library.
      
      The unstable `alloc_system` crate is folded directly into the standard library where its stable interface, the `System` type, remains the same. All unstable traces of `alloc_system` are removed, however.
      ca79ecd6
    • A
      std: Delete the `alloc_system` crate · cc759034
      Alex Crichton 提交于
      This commit deletes the `alloc_system` crate from the standard
      distribution. This unstable crate is no longer needed in the modern
      stable global allocator world, but rather its functionality is folded
      directly into the standard library. The standard library was already the
      only stable location to access this crate, and as a result this should
      not affect any stable code.
      cc759034
    • A
      rustc: Clean up allocator injection logic · d3939322
      Alex Crichton 提交于
      This commit cleans up allocator injection logic found in the compiler
      around selecting the global allocator. It turns out that now that
      jemalloc is gone the compiler never actually injects anything! This
      means that basically everything around loading crates here and there can
      be easily pruned.
      
      This also removes the `exe_allocation_crate` option from custom target
      specs as it's no longer used by the compiler anywhere.
      d3939322
    • B
      Auto merge of #55657 - davidtwco:issue-55651, r=pnkfelix · 5a2ca1a6
      bors 提交于
      NLL Diagnostic Review 3: Unions not reinitialized after assignment into field
      
      Fixes #55651, #55652.
      
      This PR makes two changes:
      
      First, it updates the dataflow builder to add an init for the place
      containing a union if there is an assignment into the field of
      that union.
      
      Second, it stops a "use of uninitialized" error occuring when there is an
      assignment into the field of an uninitialized union that was previously
      initialized. Making this assignment would re-initialize the union, as
      tested in `src/test/ui/borrowck/borrowck-union-move-assign.nll.stderr`.
      The check for previous initialization ensures that we do not start
      supporting partial initialization yet (cc #21232, #54499, #54986).
      
      This PR also fixes #55652 which was marked as requiring investigation
      as the changes in this PR add an error that was previously missing
      (and mentioned in the review comments) and confirms that the error
      that was present is correct and a result of earlier partial
      initialization changes in NLL.
      
      r? @pnkfelix (due to earlier work with partial initialization)
      cc @nikomatsakis
      5a2ca1a6
  3. 11 11月, 2018 18 次提交