1. 16 11月, 2018 5 次提交
    • D
      Reduced line length to pass tidy · 83b2152c
      Denis Merigoux 提交于
      Generalized FunctionCx
      
      Added ValueTrait and first change
      
      Generalize CondegenCx
      
      Generalized the Builder struct defined in librustc_codegen_llvm/builder.rs
      83b2152c
    • D
    • I
      5a9e6b87
    • B
      Auto merge of #55948 - matthiaskrgr:clippy, r=oli-obk · 6b9b97bd
      bors 提交于
      submodules: update clippy from d8b42690 to 7e0ddef4
      
      Fixes clippy toolstate.
      
      Changes:
      ````
      rustup https://github.com/rust-lang/rust/pull/55852/
      Fix "too" -> "foo" typo in format.rs
      Fix `use_self` violation
      Fix wrong suggestion for `redundant_closure_call`
      Check for common metadata
      Fix `use_self` false positive on `use` statements
      Fix `use_self` false positive
      Remove `+` from `has_unary_equivalent`
      Fix dogfood
      Update println! formatting
      Fix false positive in check mode caused by `gen_deprecated`
      RIIR update lints: Add check mode (update_lints.py rewrite complete)
      changed into_iter to iter and fixed a lint check
      Fix `collapsible_if` error
      Fix `possible_missing_comma` false positives
      format code
      fix comment spacing
      change single char str to char
      add lint to lintarray macro
      Revert "small fix"
      small fix
      added float support for mistyped literal lints
      tmp progress
      ````
      6b9b97bd
    • M
      submodules: update clippy from d8b42690 to f5d868c9 · f354c851
      Matthias Krüger 提交于
      Fixes clippy toolstate.
      
      Changes:
      ````
      rustup https://github.com/rust-lang/rust/pull/55852/
      Fix "too" -> "foo" typo in format.rs
      Fix `use_self` violation
      Fix wrong suggestion for `redundant_closure_call`
      Check for common metadata
      Fix `use_self` false positive on `use` statements
      Fix `use_self` false positive
      Remove `+` from `has_unary_equivalent`
      Fix dogfood
      Update println! formatting
      Fix false positive in check mode caused by `gen_deprecated`
      RIIR update lints: Add check mode (update_lints.py rewrite complete)
      changed into_iter to iter and fixed a lint check
      Fix `collapsible_if` error
      Fix `possible_missing_comma` false positives
      format code
      fix comment spacing
      change single char str to char
      add lint to lintarray macro
      Revert "small fix"
      small fix
      added float support for mistyped literal lints
      tmp progress
      ````
      f354c851
  2. 15 11月, 2018 25 次提交
    • B
      Auto merge of #55974 - pietroalbini:rollup, r=pietroalbini · 9649c1f7
      bors 提交于
      Rollup of 17 pull requests
      
      Successful merges:
      
       - #55182 (Redox: Update to new changes)
       - #55211 (Add BufWriter::buffer method)
       - #55507 (Add link to std::mem::size_of to size_of intrinsic documentation)
       - #55530 (Speed up String::from_utf16)
       - #55556 (Use `Mmap` to open the rmeta file.)
       - #55622 (NetBSD: link libstd with librt in addition to libpthread)
       - #55750 (Make `NodeId` and `HirLocalId` `newtype_index`)
       - #55778 (Wrap some query results in `Lrc`.)
       - #55781 (More precise spans for temps and their drops)
       - #55785 (Add mem::forget_unsized() for forgetting unsized values)
       - #55852 (Rewrite `...` as `..=` as a `MachineApplicable` 2018 idiom lint)
       - #55865 (Unix RwLock: avoid racy access to write_locked)
       - #55901 (fix various typos in doc comments)
       - #55926 (Change sidebar selector to fix compatibility with docs.rs)
       - #55930 (A handful of hir tweaks)
       - #55932 (core/char: Speed up `to_digit()` for `radix <= 10`)
       - #55956 (add tests for some fixed ICEs)
      
      Failed merges:
      
      r? @ghost
      9649c1f7
    • P
      Rollup merge of #55956 - euclio:issue-55587, r=estebank · d0e08ce8
      Pietro Albini 提交于
      add tests for some fixed ICEs
      
      Fixes #55587.
      Fixes #54348.
      
      Looks like these ICEs are already fixed in nightly, so this PR just adds tests.
      
      r? @estebank
      d0e08ce8
    • P
      Rollup merge of #55932 - Turbo87:to_digit, r=alexcrichton · f40f04bc
      Pietro Albini 提交于
      core/char: Speed up `to_digit()` for `radix <= 10`
      
      I noticed that `char::to_digit()` seemed to do a bit of extra work for handling `[a-zA-Z]` characters. Since `to_digit(10)` seems to be the most common case (at least in the `rust` codebase) I thought it might be valuable to create a fast path for that case, and according to the benchmarks that I added in one of the commits it seems to pay off. I also created another fast path for the `radix < 10` case, which also seems to have a positive effect.
      
      It is very well possible that I'm measuring something entirely unrelated though, so please verify these numbers and let me know if I missed something!
      
      ### Before
      
      ```
      # Run 1
      test char::methods::bench_to_digit_radix_10      ... bench:      16,265 ns/iter (+/- 1,774)
      test char::methods::bench_to_digit_radix_16      ... bench:      13,938 ns/iter (+/- 2,479)
      test char::methods::bench_to_digit_radix_2       ... bench:      13,090 ns/iter (+/- 524)
      test char::methods::bench_to_digit_radix_36      ... bench:      14,236 ns/iter (+/- 1,949)
      
      # Run 2
      test char::methods::bench_to_digit_radix_10      ... bench:      16,176 ns/iter (+/- 1,589)
      test char::methods::bench_to_digit_radix_16      ... bench:      13,896 ns/iter (+/- 3,140)
      test char::methods::bench_to_digit_radix_2       ... bench:      13,158 ns/iter (+/- 1,112)
      test char::methods::bench_to_digit_radix_36      ... bench:      14,206 ns/iter (+/- 1,312)
      
      # Run 3
      test char::methods::bench_to_digit_radix_10      ... bench:      16,221 ns/iter (+/- 2,423)
      test char::methods::bench_to_digit_radix_16      ... bench:      14,361 ns/iter (+/- 3,926)
      test char::methods::bench_to_digit_radix_2       ... bench:      13,097 ns/iter (+/- 671)
      test char::methods::bench_to_digit_radix_36      ... bench:      14,388 ns/iter (+/- 1,068)
      ```
      
      ### After
      
      ```
      # Run 1
      test char::methods::bench_to_digit_radix_10      ... bench:      11,521 ns/iter (+/- 552)
      test char::methods::bench_to_digit_radix_16      ... bench:      12,926 ns/iter (+/- 684)
      test char::methods::bench_to_digit_radix_2       ... bench:      11,266 ns/iter (+/- 1,085)
      test char::methods::bench_to_digit_radix_36      ... bench:      14,213 ns/iter (+/- 614)
      
      # Run 2
      test char::methods::bench_to_digit_radix_10      ... bench:      11,424 ns/iter (+/- 1,042)
      test char::methods::bench_to_digit_radix_16      ... bench:      12,854 ns/iter (+/- 1,193)
      test char::methods::bench_to_digit_radix_2       ... bench:      11,193 ns/iter (+/- 716)
      test char::methods::bench_to_digit_radix_36      ... bench:      14,249 ns/iter (+/- 3,514)
      
      # Run 3
      test char::methods::bench_to_digit_radix_10      ... bench:      11,469 ns/iter (+/- 685)
      test char::methods::bench_to_digit_radix_16      ... bench:      12,852 ns/iter (+/- 568)
      test char::methods::bench_to_digit_radix_2       ... bench:      11,275 ns/iter (+/- 1,356)
      test char::methods::bench_to_digit_radix_36      ... bench:      14,188 ns/iter (+/- 1,501)
      ```
      
      I ran the benchmark using:
      
      ```sh
      python x.py bench src/libcore --stage 1 --keep-stage 0 --test-args "bench_to_digit"
      ```
      f40f04bc
    • P
      Rollup merge of #55930 - ljedrz:hir_bonuses, r=cramertj · c915f921
      Pietro Albini 提交于
      A handful of hir tweaks
      
      - remove an unused `hir_vec` macro pattern
      - simplify `fmt::Debug` for `hir::Path` (take advantage of the `Display` implementation)
      - remove an unused type alias (`CrateConfig`)
      - simplify a `match` expression (join common patterns)
      c915f921
    • P
      Rollup merge of #55926 - cynecx:fix-rustdoc-mobile-css, r=GuillaumeGomez · 12556a4b
      Pietro Albini 提交于
      Change sidebar selector to fix compatibility with docs.rs
      
      Fix for #55883.
      12556a4b
    • P
      Rollup merge of #55901 - euclio:speling, r=petrochenkov · 66fcb3ce
      Pietro Albini 提交于
      fix various typos in doc comments
      66fcb3ce
    • P
      Rollup merge of #55865 - RalfJung:unix-rwlock, r=alexcrichton · fb455329
      Pietro Albini 提交于
      Unix RwLock: avoid racy access to write_locked
      
      We should only access `write_locked` if we really got the lock.
      fb455329
    • P
      Rollup merge of #55852 - varkor:dotdotequals-lint, r=zackmdavis · 3c7acc78
      Pietro Albini 提交于
      Rewrite `...` as `..=` as a `MachineApplicable` 2018 idiom lint
      
      Fixes https://github.com/rust-lang/rust/issues/51043.
      3c7acc78
    • P
      Rollup merge of #55785 - stjepang:unsized-drop-forget, r=alexcrichton · 202724cd
      Pietro Albini 提交于
      Add mem::forget_unsized() for forgetting unsized values
      
      ~~Allows passing values of `T: ?Sized` types to `mem::drop` and `mem::forget`.~~
      
      Adds `mem::forget_unsized()` that accepts `T: ?Sized`.
      
      I had to revert the PR that removed the `forget` intrinsic and replaced it with `ManuallyDrop`: https://github.com/rust-lang/rust/pull/40559
      We can't use `ManuallyDrop::new()` here because it needs `T: Sized` and we don't have support for unsized return values yet (will we ever?).
      
      r? @EddyB
      202724cd
    • P
      Rollup merge of #55781 -... · 6ca7bc0e
      Pietro Albini 提交于
      Rollup merge of #55781 - pnkfelix:issue-54382-more-precise-spans-for-temps-and-their-drops, r=davidtwco
      
      More precise spans for temps and their drops
      
      This PR has two main enhancements:
      
       1. when possible during code generation for a statement (like `expr();`), pass along the span of a statement, and then attribute the drops of temporaries from that statement to the statement's end-point (which will be the semicolon if it is a statement that is terminating by a semicolon).
       2. when evaluating a block expression into a MIR temp, use the span of the block's tail expression (rather than the span of whole block including its statements and curly-braces) for the span of the temp.
      
      Each of these individually increases the precision of our diagnostic output; together they combine to make a much clearer picture about the control flow through the spans.
      
      Fix #54382
      6ca7bc0e
    • P
      Rollup merge of #55778 - nnethercote:LrcPreds, r=eddyb · 97d0d896
      Pietro Albini 提交于
      Wrap some query results in `Lrc`.
      
      So that the frequent clones in `try_get` are cheaper.
      97d0d896
    • P
      Rollup merge of #55750 - oli-obk:node_id_x, r=michaelwoerister · 1d5829d8
      Pietro Albini 提交于
      Make `NodeId` and `HirLocalId` `newtype_index`
      1d5829d8
    • P
      Rollup merge of #55622 - jakllsch:netbsd-librt, r=alexcrichton · 756870a2
      Pietro Albini 提交于
      NetBSD: link libstd with librt in addition to libpthread
      
      Some aio(3) and mq(3) functions in the libc crate actually come from NetBSD librt, not libc or libpthread.
      756870a2
    • P
      Rollup merge of #55556 - nnethercote:MmapMeta, r=eddyb · 9c5b8aad
      Pietro Albini 提交于
      Use `Mmap` to open the rmeta file.
      
      Because those files are quite large, contribute significantly to peak
      memory usage, but only a small fraction of the data is ever read.
      
      r? @EddyB
      9c5b8aad
    • P
      Rollup merge of #55530 - ljedrz:speed_up_String_from_utf16, r=SimonSapin · 3b404349
      Pietro Albini 提交于
      Speed up String::from_utf16
      
      Collecting into a `Result` is idiomatic, but not necessarily fast due to rustc not being able to preallocate for the resulting collection. This is fine in case of an error, but IMO we should optimize for the common case, i.e. a successful conversion.
      
      This changes the behavior of `String::from_utf16` from collecting into a `Result` to pushing to a preallocated `String` in a loop.
      
      According to [my simple benchmark](https://gist.github.com/ljedrz/953a3fb74058806519bd4d640d6f65ae) this change makes `String::from_utf16` around **twice** as fast.
      3b404349
    • P
      Rollup merge of #55507 - fhartwig:size_of_intrinsic_docs, r=frewsxcv · d7c833b7
      Pietro Albini 提交于
      Add link to std::mem::size_of to size_of intrinsic documentation
      
      The other intrinsics with safe/stable alternatives already have documentation to this effect.
      d7c833b7
    • P
      Rollup merge of #55211 - fintelia:bufwriter-buffer, r=shepmaster · b20bba4f
      Pietro Albini 提交于
      Add BufWriter::buffer method
      
      CC #45323
      b20bba4f
    • P
      Rollup merge of #55182 - jD91mZM2:rebased, r=alexcrichton · f4ecc1f5
      Pietro Albini 提交于
      Redox: Update to new changes
      
      These are all cherry-picked from our fork:
      
       - Remove the `env:` scheme
       - Update `execve` system call to `fexec`
       - Interpret shebangs: these are no longer handled by the kernel, which like usual tries to be as minimal as possible
      f4ecc1f5
    • B
      Auto merge of #54906 - qnighy:fix-issue-50452, r=nikomatsakis · 99e3fca2
      bors 提交于
      Reattach all grandchildren when constructing specialization graph.
      
      Specialization graphs are constructed by incrementally adding impls in the order of declaration. If the impl being added has its specializations in the graph already, they should be reattached under the impl. However, the current implementation only reattaches the one found first. Therefore, in the following specialization graph,
      
      ```
        Tr1
         |
         I3
        /  \
       I1  I2
      ```
      
      If `I1`, `I2`, and `I3` are declared in this order, the compiler mistakenly constructs the following graph:
      
      ```
        Tr1
        /  \
       I3  I2
        |
       I1
      ```
      
      This patch fixes the reattach procedure to include all specializing grandchildren-to-be.
      
      Fixes #50452.
      99e3fca2
    • B
      Auto merge of #55716 - RalfJung:escape-to-raw, r=oli-obk · 4ec0ba95
      bors 提交于
      Add escape-to-raw MIR statement
      
      Add a new MIR "ghost state statement": Escaping a ptr to permit raw accesses.
      
      ~~This includes #55549, [click here](https://github.com/RalfJung/rust/compare/miri-visitor...RalfJung:escape-to-raw) for just the new commits.~~
      4ec0ba95
    • B
      Auto merge of #55939 - alexcrichton:path-regression-again, r=sfackler · 7d3b9b16
      bors 提交于
      std: Synchronize access to global env during `exec`
      
      This commit, after reverting #55359, applies a different fix for #46775
      while also fixing #55775. The basic idea was to go back to pre-#55359
      libstd, and then fix #46775 in a way that doesn't expose #55775.
      
      The issue described in #46775 boils down to two problems:
      
      * First, the global environment is reset during `exec` but, but if the
        `exec` call fails then the global environment was a dangling pointer
        into free'd memory as the block of memory was deallocated when
        `Command` is dropped. This is fixed in this commit by installing a
        `Drop` stack object which ensures that the `environ` pointer is
        preserved on a failing `exec`.
      
      * Second, the global environment was accessed in an unsynchronized
        fashion during `exec`. This was fixed by ensuring that the
        Rust-specific environment lock is acquired for these system-level
        operations.
      
      Thanks to Alex Gaynor for pioneering the solution here!
      
      Closes #55775
      7d3b9b16
    • A
      std: Synchronize access to global env during `exec` · 4032b7a4
      Alex Crichton 提交于
      This commit, after reverting #55359, applies a different fix for #46775
      while also fixing #55775. The basic idea was to go back to pre-#55359
      libstd, and then fix #46775 in a way that doesn't expose #55775.
      
      The issue described in #46775 boils down to two problems:
      
      * First, the global environment is reset during `exec` but, but if the
        `exec` call fails then the global environment was a dangling pointer
        into free'd memory as the block of memory was deallocated when
        `Command` is dropped. This is fixed in this commit by installing a
        `Drop` stack object which ensures that the `environ` pointer is
        preserved on a failing `exec`.
      
      * Second, the global environment was accessed in an unsynchronized
        fashion during `exec`. This was fixed by ensuring that the
        Rust-specific environment lock is acquired for these system-level
        operations.
      
      Thanks to Alex Gaynor for pioneering the solution here!
      
      Closes #55775
      Co-authored-by: NAlex Gaynor <alex.gaynor@gmail.com>
      4032b7a4
    • B
      Auto merge of #55947 - michaelwoerister:xlto-fix-lld-opt, r=Mark-Simulacrum · 6f93e93a
      bors 提交于
      xLTO: Don't pass --plugin-opt=thin to LLD. That's not supported anymore.
      
      It seems that `-plugin-opt=thin` is not needed anymore when invoking LLD for ThinLTO. Unfortunately, still passing the option makes LLD crash instead of giving a deprecation warning or something.
      6f93e93a
    • A
      add test for issue #54348 · e2ef0f74
      Andy Russell 提交于
      e2ef0f74
    • A
      add test for issue #55587 · 055e7b72
      Andy Russell 提交于
      055e7b72
  3. 14 11月, 2018 10 次提交