1. 15 6月, 2020 2 次提交
    • R
      Rollup merge of #72389 - Aaron1011:feature/move-fn-self-msg, r=nikomatsakis · 372cb9b6
      Ralf Jung 提交于
      Explain move errors that occur due to method calls involving `self`
      
      When calling a method that takes `self` (e.g. `vec.into_iter()`), the method receiver is moved out of. If the method receiver is used again, a move error will be emitted::
      
      ```rust
      fn main() {
          let a = vec![true];
          a.into_iter();
          a;
      }
      ```
      
      emits
      
      ```
      error[E0382]: use of moved value: `a`
       --> src/main.rs:4:5
        |
      2 |     let a = vec![true];
        |         - move occurs because `a` has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait
      3 |     a.into_iter();
        |     - value moved here
      4 |     a;
        |     ^ value used here after move
      ```
      
      However, the error message doesn't make it clear that the move is caused by the call to `into_iter`.
      
      This PR adds additional messages to move errors when the move is caused by using a value as the receiver of a `self` method::
      
      ```
      error[E0382]: use of moved value: `a`
         --> vec.rs:4:5
          |
      2   |     let a = vec![true];
          |         - move occurs because `a` has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait
      3   |     a.into_iter();
          |     ------------- value moved due to this method call
      4   |     a;
          |     ^ value used here after move
          |
      note: this function takes `self`, which moves the receiver
         --> /home/aaron/repos/rust/src/libcore/iter/traits/collect.rs:239:5
          |
      239 |     fn into_iter(self) -> Self::IntoIter;
      ```
      
      TODO:
      
      - [x] Add special handling for `FnOnce/FnMut/Fn` - we probably don't want to point at the unstable trait methods
      - [x] Consider adding additional context for operations (e.g. `Shr::shr`) when the call was generated using the operator syntax (e.g. `a >> b`)
      - [x] Consider pointing to the method parent (impl or trait block) in addition to the method itself.
      372cb9b6
    • R
      Rollup merge of #71824 - ecstatic-morse:const-check-post-drop-elab, r=oli-obk · 5c61a8dc
      Ralf Jung 提交于
      Check for live drops in constants after drop elaboration
      
      Resolves #66753.
      
      This PR splits the MIR "optimization" pass series in two and introduces a query–`mir_drops_elaborated_and_const_checked`–that holds the result of the `post_borrowck_cleanup` analyses and checks for live drops. This query is invoked in `rustc_interface` for all items requiring const-checking, which means we now do `post_borrowck_cleanup` for items even if they are unused in the crate.
      
      As a result, we are now more precise about when drops are live. This is because drop elaboration can e.g. eliminate drops of a local when all its fields are moved from. This does not mean we are doing value-based analysis on move paths, however; Storing a `Some(CustomDropImpl)` into a field of a local will still set the qualifs for that entire local.
      
      r? @oli-obk
      5c61a8dc
  2. 14 6月, 2020 11 次提交
    • B
      Auto merge of #73089 - tmiasko:musl-1.1.24, r=kennytm · 4fb54ed4
      bors 提交于
      Update musl to 1.1.24
      
      Release notes since previous version 1.1.22:
      
      ## 1.1.23 release notes
      
      ### new features:
      - riscv64 port
      - configure now allows customizing AR and RANLIB vars
      - header-level support for new linux features in 5.1
      
      ### major internal changes:
      - removed extern __syscall; syscall header code is now fully self-contained
      
      ### performance:
      - new math library implementation for log/exp/pow
      - aarch64 dynamic tlsdesc function is streamlined
      
      ### compatibility & conformance:
      - O_TTY_INIT is now defined
      - sys/types.h no longer pollutes namespace with sys/sysmacros.h in any profile
      - powerpc asm is now compatible with clang internal assembler
      
      ### changes for new POSIX interpretations:
      - fgetwc now sets stream error indicator on encoding errors
      - fmemopen no longer rejects 0 size
      
      ### bugs fixed:
      - static TLS for shared libraries was allocated wrong on "Variant I" archs
      - crash in dladdr reading through uninitialized pointer on non-match
      - sigaltstack wrongly errored out on invalid ss_size when doing SS_DISABLE
      - getdents function misbehaved with buffer length larger than INT_MAX
      - set*id could deadlock after fork from multithreaded process
      
      ### arch-specfic bugs fixed:
      - s390x SO_PEERSEC definition was wrong
      - passing of 64-bit syscall arguments was broken on microblaze
      - posix_fadvise was broken on mips due to missing 7-arg syscall support
      - vrregset_t layout and member naming was wrong on powerpc64
      
      ## 1.1.24 release notes
      
      ### new features:
      - GLOB_TILDE extension to glob
      - non-stub catgets localization API, using netbsd binary catalog format
      - posix_spawn file actions for [f]chdir (extension, pending future standard)
      - secure_getenv function (extension)
      - copy_file_range syscall wrapper (Linux extension)
      - header-level support for new linux features in 5.2
      
      ### performance:
      - new fast path for lrint (generic C version) on 32-bit archs
      
      ### major internal changes:
      - functions involving time are overhauled to be time64-ready in 32-bit archs
      - x32 uses the new time64 code paths to replace nasty hacks in syscall glue
      
      ### compatibility & conformance:
      - support for powerpc[64] unaligned relocation types
      - powerpc[64] and sh sys/user.h no longer clash with kernel asm/ptrace.h
      - select no longer modifies timeout on failure (or at all)
      - mips64 stat results are no longer limited to 32-bit time range
      - optreset (BSD extension) now has a public declaration
      - support for clang inconsistencies in wchar_t type vs some 32-bit archs
      - mips r6 syscall asm no longer has invalid lo/hi register clobbers
      - vestigial asm declarations of __tls_get_new are removed (broke some tooling)
      - riscv64 mcontext_t mismatch glibc's member naming is corrected
      
      ### bugs fixed:
      - glob failed to match broken symlinks consistently
      - invalid use of interposed calloc to allocate initial TLS
      - various dlsym symbol resolution logic errors
      - semctl with SEM_STAT_ANY didn't work
      - pthread_create with explicit scheduling was subject to priority inversion
      - pthread_create failure path had data race for thread count
      - timer_create with SIGEV_THREAD notification had data race getting timer id
      - wide printf family failed to support l modifier for float formats
      
      ### arch-specific bugs fixed:
      - x87 floating point stack imbalance in math asm (i386-only CVE-2019-14697)
      - x32 clock_adjtime, getrusage, wait3, wait4 produced junk (struct mismatches)
      - lseek broken on x32 and mipsn32 with large file offsets
      - riscv64 atomics weren't compiler barriers
      - riscv64 atomics had broken asm constraints (missing earlyclobber flag)
      - arm clone() was broken when compiled as thumb if start function returned
      - mipsr6 setjmp/longjmp did not preserve fpu register state correctly
      
      Fixes #71099.
      4fb54ed4
    • B
      Auto merge of #73232 - RalfJung:miri-no-default, r=Mark-Simulacrum · 10326d80
      bors 提交于
      x.py: do not build Miri by default on stable/beta
      
      Fixes https://github.com/rust-lang/rust/issues/73117
      
      Do I need to do anything to make sure Miri is still built by the tools CI builder? Are there other tools that should be off-by-default?
      
      Also, unfortunately the `DEFAULT` associated const has no doc comment, so I have no idea what it does, or why there are semmingly two places where the default build of tools is controlled.
      10326d80
    • B
      d3d3a14f
    • D
      Add tests for `const_precise_live_drops` · 2dcf7dbb
      Dylan MacKenzie 提交于
      2dcf7dbb
    • D
      Update incorrect error code docs · 9e2ee322
      Dylan MacKenzie 提交于
      9e2ee322
    • D
    • D
      Add MIR phase and query for drop elaboration · a43e486e
      Dylan MacKenzie 提交于
      a43e486e
    • D
      Add `CheckLiveDrops` pass · f5370faa
      Dylan MacKenzie 提交于
      f5370faa
    • D
      Add feature gate for precise live drop checking · a77f046c
      Dylan MacKenzie 提交于
      a77f046c
    • D
      Make `Qualifs` getters public · d73674e1
      Dylan MacKenzie 提交于
      d73674e1
    • D
      Move `check_op` logic to `ops` module · cecfa43f
      Dylan MacKenzie 提交于
      cecfa43f
  3. 13 6月, 2020 16 次提交
  4. 12 6月, 2020 11 次提交