1. 15 1月, 2017 11 次提交
  2. 14 1月, 2017 14 次提交
    • B
      Auto merge of #38944 - michaelwoerister:incr-generics-partitioning, r=nikomatsakis · ef04fc82
      bors 提交于
      trans: Treat generics like regular functions, not like #[inline] function, during CGU partitioning
      
      This PR makes generics be treated just like regular functions during CGU partitioning:
      
      + the function instantiation is placed in a codegen unit based on the function's DefPath,
      + unless it is marked with `#[inline]`  -- which causes a private copy of the function to be placed in every referencing codegen unit.
      
      This has the following effects:
      + Multi codegen unit builds will become faster because code for generic functions is duplicated less.
      + Multi codegen unit builds might have lower runtime performance, since generics are not available for inlining automatically any more.
      + Single codegen unit builds are not affected one way or the other.
      
      This partitioning scheme is particularly good for incremental compilation as it drastically reduces the number of false positives during codegen unit invalidation.
      
      I'd love to have a benchmark suite for estimating the effect on runtime performance for changes like this one.
      
      r? @nikomatsakis
      
      cc @rust-lang/compiler
      ef04fc82
    • B
      Auto merge of #38935 - redox-os:fix_path_redox, r=brson · b4c02071
      bors 提交于
      Fix is_absolute on Redox
      
      Due to not using prefixes on Redox, yet, it must be added as an exception to Path::is_absolute.
      b4c02071
    • B
      Auto merge of #38927 - petrochenkov:leven, r=jseyfried · 7d82d95a
      bors 提交于
      resolve: Levenshtein-based suggestions for non-import paths
      
      This patch addresses both items from https://github.com/rust-lang/rust/issues/30197#issuecomment-264846000 and therefore implements the largest part of https://github.com/rust-lang/rust/issues/30197.
      
      r? @jseyfried
      7d82d95a
    • B
      Auto merge of #38914 - est31:tidy-gate-tests, r=nikomatsakis · 6fe23719
      bors 提交于
      Make tidy check for lang gate tests
      
      Add gate tests to the checks that tidy performs. Excerpt from the commit message of the main commit:
      
          Require compile-fail tests for new lang features
      
          Its non trivial to test lang feature gates, and people
          forget to add such tests. So we extend the features lint
          of the tidy tool to ensure that all new lang features
          contain a new compile-fail test.
      
          Of course, one could drop this requirement and just
          grep all tests in run-pass for #![feature(abc)] and
          then run this test again, removing the mention,
          requiring that it fails.
      
          But this only tests for the existence of a compilation
          failure. Manual tests ensure that also the correct lines
          spawn the error, and also test the actual error message.
      
          For library features, it makes no sense to require such
          a test, as here code is used that is generic for all
          library features.
      
      The tidy lint extension now checks the compile-fail test suite for occurences of "gate-test-X" where X is a feature. Alternatively, it also accepts file names with the form "feature-gate-X.rs". If a lang feature is found that has no such check, we emit a tidy error.
      
      I've applied the markings to all tests I could find in the test suite. I left a small (20 elements) whitelist of features that right now have no gate test, or where I couldn't find one. Once this PR gets merged, I'd like to close issue #22820 and open a new one on suggestion of @nikomatsakis to track the removal of all elements from that whitelist (already have a draft). Writing such a small test can be a good opportunity for a first contribution, so I won't touch it (let others have the fun xD).
      
      cc @brson , @pnkfelix (they both discussed about this in the issue linked above).
      6fe23719
    • B
      Auto merge of #39021 - alexcrichton:try-debug-travis, r=brson · b13cc05c
      bors 提交于
      travis: Attempt to debug OSX linker segfaults
      
      This commit attempts to debug the segfaults that we've been seeing on OSX on
      Travis. I have no idea what's going on here mostly, but let's try to look at
      core dumps and get backtraces to see what's going on. This commit itself is
      mostly a complete shot in the dark, I'm not sure if this even works...
      
      cc #38878
      b13cc05c
    • B
      Auto merge of #38854 - Mark-Simulacrum:immediate-refactor, r=eddyb · d70cd490
      bors 提交于
      Simplify type_is_immediate and type_is_fat_ptr
      
      r? @EddyB
      d70cd490
    • B
      Auto merge of #39030 - GuillaumeGomez:rollup, r=GuillaumeGomez · 77898817
      bors 提交于
      Rollup of 10 pull requests
      
      - Successful merges: #38362, #38636, #38877, #38946, #38965, #38986, #38994, #38995, #39024, #39027
      - Failed merges:
      77898817
    • B
      Avoid using load/stores on first class aggregates · 43cf5b92
      Björn Steinbrink 提交于
      LLVM usually prefers using memcpys over direct loads/store of first
      class aggregates. The check in type_is_immediate to mark certain small
      structs was originally part of the code to handle such immediates in
      function arguments, and it had a counterpart in load_ty/store_ty to
      actually convert small aggregates to integers.
      
      But since then, the ABI handling has been refactored and takes care of
      converting small aggregates to integers. During that refactoring, the
      code to handle small aggregates in load_ty/store_ty has been removed,
      and so we accidentally started using loads/stores on FCA values.
      
      Since type_is_immediate() is no longer responsible for ABI-related
      conversions, and using a memcpy even for small aggregates is usually
      better than performing a FCA load/store, we can remove that code part
      and only handle simple types as immediates there.
      
      This integrates PR #38906 onto this branch.
      
      Fixes #38906.
      43cf5b92
    • J
      Fix is_absolute on Redox · ca2ade1d
      Jeremy Soller 提交于
      ca2ade1d
    • V
      589bd649
    • B
      Auto merge of #39036 - aidanhs:aphs-robust-docker, r=alexcrichton · 87809628
      bors 提交于
      Remove strictly-unnecessary flags for docker
      
      cc #39035
      
      In addition to `--tty` I've removed `--interactive` as I don't think there's any reason for it to be there (it only hooks up stdin, which shouldn't be used anyway).
      
      If this looks like it's working over a few days then I'll also alter the libc scripts.
      
      r? @alexcrichton
      87809628
    • S
      update mailmap · 9dedc815
      Steve Klabnik 提交于
      9dedc815
    • A
      Remove strictly-unnecessary flags for docker · 8539ce84
      Aidan Hobson Sayers 提交于
      8539ce84
    • B
      Auto merge of #38890 - petrochenkov:noresolve, r=nrc · 1d5fb06c
      bors 提交于
      resolve: Do not use "resolve"/"resolution" in error messages
      
      Use less jargon-y wording instead.
      `cannot find <struct> <S> in <this scope>` and `cannot find <struct> <S> in <module a::b>` are used for base messages (this also harmonizes nicely with "you can import it into scope" suggestions) and `not found in <this scope>` and `not found in <a::b>` are used for short labels in fall-back case.
      I tweaked some other diagnostics to avoid using "resolve" (see, e.g., `librustc_resolve/macros.rs`), but haven't touched messages for imports.
      
      Closes https://github.com/rust-lang/rust/issues/38750
      r? @nrc
      1d5fb06c
  3. 13 1月, 2017 15 次提交