1. 17 3月, 2016 9 次提交
  2. 16 3月, 2016 21 次提交
    • B
      Auto merge of #32228 - jonas-schievink:diag1, r=sanxiyn · fd5603b6
      bors 提交于
      Normalize return type when checking for E0269
      
      Fixes #31597
      
      First time dealing with normalization. Maybe `normalize_associated_type` would be better here, but it seems to imply it's only used during trans.
      fd5603b6
    • B
      Auto merge of #32280 - japaric:rt, r=alexcrichton · e68d40ed
      bors 提交于
      update compiler-rt submodule
      
      fixes #32194
      
      also see rust-lang/compiler-rt#17
      
      r? @alexcrichton
      e68d40ed
    • J
      Resolve conflicts and extend the test · 96d9408d
      Jonas Schievink 提交于
      96d9408d
    • J
      Use `fully_normalize`, unwrapping its result · 4dbb01ff
      Jonas Schievink 提交于
      4dbb01ff
    • J
      Normalize return type when checking for E0269 · f0b0a4ff
      Jonas Schievink 提交于
      Fixes #31597
      f0b0a4ff
    • B
      Auto merge of #32273 - alexcrichton:fix-time-sub, r=aturon · 9afa5a13
      bors 提交于
      std: Fix overflow when subtracting Instant
      
      This code was currently only exercised on OSX, but this applies the same method
      of subtraction used on Linux which doesn't have the same overflow issues.
      
      Note that this currently includes no tests, but that's because this is only
      visible with debug assertions enabled. Soon, however, I'll enable debug
      assertions on all auto builds on the bots so we should get testing for this.
      
      Closes #32268
      9afa5a13
    • O
      7a2c50f9
    • J
      Fix fallout in tests · b3c62654
      Jeffrey Seyfried 提交于
      b3c62654
    • J
      Improve diagnostics for duplicate names · 65ec4dfe
      Jeffrey Seyfried 提交于
      65ec4dfe
    • B
      Auto merge of #32266 - alexcrichton:fix-mingw-rustbuild-again, r=brson · 3317cc9d
      bors 提交于
      rustbuild: Fix LLVM compile on MinGW
      
      The LLVM change [1] in #32239 unfortunately broke the LLVM build on MinGW, so
      this LLVM submodule update brings in one more fix [2] which should hopefully
      remedy that.
      
      Once this lands we should be able to immediately start gating on this to prevent
      it from happening again.
      
      [1]: https://github.com/rust-lang/llvm/commit/be89e4b5
      [2]: https://github.com/rust-lang/llvm/commit/3dcd2c84
      3317cc9d
    • J
      update compiler-rt submodule · 34a44b59
      Jorge Aparicio 提交于
      fixes #32194
      34a44b59
    • B
      Auto merge of #32236 - alexcrichton:better-compile-intrinsics, r=arielb1 · 0986d645
      bors 提交于
      rustc: Improve compile time of platform intrinsics
      
      This commit improves the compile time of `rustc_platform_intrinsics` from 23s to
      3.6s if compiling with `-O` and from 77s to 17s if compiling with `-O -g`. The
      compiled rlib size also drops from 3.1M to 1.2M.
      
      The wins here were gained by removing the destructors associated with `Type` by
      removing the internal `Box` and `Vec` indirections. These destructors meant that
      a lot of landing pads and extra code were generated to manage the runtime
      representations. Instead everything can basically be statically computed and
      shoved into rodata, so all we need is a giant string compare to lookup what's
      what.
      
      Closes #28273
      0986d645
    • A
      rustc: Improve compile time of platform intrinsics · 87ede2da
      Alex Crichton 提交于
      This commit improves the compile time of `rustc_platform_intrinsics` from 23s to
      3.6s if compiling with `-O` and from 77s to 17s if compiling with `-O -g`. The
      compiled rlib size also drops from 3.1M to 1.2M.
      
      The wins here were gained by removing the destructors associated with `Type` by
      removing the internal `Box` and `Vec` indirections. These destructors meant that
      a lot of landing pads and extra code were generated to manage the runtime
      representations. Instead everything can basically be statically computed and
      shoved into rodata, so all we need is a giant string compare to lookup what's
      what.
      
      Closes #28273
      87ede2da
    • A
      std: Fix overflow when subtracting Instant · 0943b166
      Alex Crichton 提交于
      This code was currently only exercised on OSX, but this applies the same method
      of subtraction used on Linux which doesn't have the same overflow issues.
      
      Note that this currently includes no tests, but that's because this is only
      visible with debug assertions enabled. Soon, however, I'll enable debug
      assertions on all auto builds on the bots so we should get testing for this.
      
      Closes #32268
      0943b166
    • B
      Auto merge of #31838 - aochagavia:trans, r=nrc · c66d2380
      bors 提交于
      Refactor rustc_trans::save to allow other backends than CSV
      
      r? @nrc
      
      Things done:
      * Moved `(.*)Data` structs to an own module, so they can be imported easily (`use data::*`).
      * Created a `Dump` trait with callbacks for dumping items.
      * Refactored `DumpCsvVisitor` to use an implementor of `Dump` instead of dumping as CSV. Renamed it to `DumpVisitor`.
      * Created a `DumpCsv` struct that implements `Dump` and serializes items as CSV.
      
      I tried to extract some of the logic contained in `FmtStr` and `Recorder`, such as normalization of ids (I put it in `DumpVisitor`). I think it makes sense to provide the same information to other implementors of `Dump`, instead of normalizing only for `DumpCsv`. However, there is still some logic related to spans implemented only for `DumpCsv`. I just thought it would be better to merge this as soon as possible, since there are so much changes, and fix this afterwards.
      c66d2380
    • A
      Refactor rustc_trans::save · 67395d81
      Adolfo Ochagavía 提交于
      Move rustc_trans::*Data to own module
      Add new data to rustc_trans::save
      Create a Dump trait implemented by structs that dump save analysis data
      Split dump_csv into a DumpVisitor and a CsvDumper
      67395d81
    • A
      rustbuild: Fix LLVM compile on MinGW · 41e184c7
      Alex Crichton 提交于
      The LLVM change [1] in #32239 unfortunately broke the LLVM build on MinGW, so
      this LLVM submodule update brings in one more fix [2] which should hopefully
      remedy that.
      
      Once this lands we should be able to immediately start gating on this to prevent
      it from happening again.
      
      [1]: https://github.com/rust-lang/llvm/commit/be89e4b5
      [2]: https://github.com/rust-lang/llvm/commit/3dcd2c84
      41e184c7
    • B
      Auto merge of #31887 - SimonSapin:quiet-test, r=alexcrichton · 74dfc1dd
      bors 提交于
      Shorter output for `rustc --test` binaries.
      
      Until now, a program created with `rustc --test` prints at least one line per test. This can be very verbose, especially with [data-driven tests](https://internals.rust-lang.org/t/test-and-external-test-harnesses/3145) when hundreds or thousands of tests is not rare.
      
      This changes the default output to one character per test (except metrics and benchmarks results which have additional data to show):
      
      ```
           Running target/debug/wpt-75c594dc1e6e6187
      
      running 314 tests
      ..............................................................................
      ..............................................................................
      ..............................................................................
      ..............................................................................
      ..
      test result: ok. 314 passed; 0 failed; 0 ignored; 0 measured
      ```
      
      <s>The previous behavior is available by passing `--verbose` to the test program. Maybe `cargo test --verbose` could be changed to do that?</s> **Edit:** the default is now unchanged, `-q` or `--quiet` enables the new output.
      74dfc1dd
    • S
      Add a test for --quiet in test harness. · d23fd711
      Simon Sapin 提交于
      d23fd711
    • S
      Shorter output for `rustc --test` binaries. · bbb45c41
      Simon Sapin 提交于
      A program created with `rustc --test` prints at least one line per test.
      This can be very verbose, especially with [data-driven tests](
      https://internals.rust-lang.org/t/test-and-external-test-harnesses/3145)
      when hundreds or thousands of tests is not rare.
      
      This adds a `-q` or `--quiet` option that changes the output
      to one character instead of one line per test
      (except metrics and benchmarks results which have additional data to
      show):
      
      ```
           Running target/debug/wpt-75c594dc1e6e6187
      
      running 314 tests
      ..............................................................................
      ..............................................................................
      ..............................................................................
      ..............................................................................
      ..
      test result: ok. 314 passed; 0 failed; 0 ignored; 0 measured
      ```
      
      This is a breaking change since the `test::TestOpts` struct
      now has one more field.
      bbb45c41
    • B
      Auto merge of #32251 - durka:derive-2810, r=alexcrichton · 1efa752e
      bors 提交于
      derive: clean up hygiene
      
      derive: clean up hygiene
      
      Fixes #2810.
      
      Spawned from #32139.
      
      r? @alexcrichton
      1efa752e
  3. 15 3月, 2016 10 次提交
    • B
      Auto merge of #32250 - durka:derive-31574, r=alexcrichton · f9121e87
      bors 提交于
      derive: use intrinsics::unreachable over unreachable!()
      
      derive: use intrinsics::unreachable over unreachable!()
      
      Fixes #31574.
      
      Spawned from #32139.
      
      r? @alexcrichton
      f9121e87
    • B
      Auto merge of #32239 - alexcrichton:fix-cross-to-freebsd, r=brson · 483fc715
      bors 提交于
      rustbuild: Fix cross compiling to FreeBSD
      
      This commit fixes our support for cross compiling a compiler to run on FreeBSD.
      Over the weekend I managed to get a cross compiler from Linux to FreeBSD [1]
      which I hope to soon use to start producing FreeBSD nightly compilers. With the
      `make dist` support added in #32237 we should be able to produce standard
      rustc/rust-std packages for FreeBSD through a new slave with this cross compiler.
      
      Currently, however, we don't "Just Work" when cross compiling FreeBSD and a
      number of changes were required (part of this PR). They include:
      
      * A few build fixes were needed in LLVM. Our own branch has been rebased on the
        actual 3.8 release and I applied one extra commit [2] which contains two fixes:
      
        1. The LLVM CMake build system passes the `-Wl,-z,defs` flag on many
           platforms, but *not* when `CMAKE_SYSTEM_NAME` is "FreeBSD". Unfortunately
           this doesn't take into account when we're cross compiling, and as predicted
           the build will fail if `-Wl,-z,defs` is passed (see [3] for more info). To
           fix this we test `TARGET_TRIPLE` instead of the `CMAKE_SYSTEM_NAME` which
           is what we're compiling for which fixes the problem.
        2. The `PATH_MAX` constant is apparently defined in a different location than
           many other Unix systems, so a file which required this just needed some
           help to keep compiling.
      
      * Support for compiling compiler-rt with CMake has been added to rustbuild. It
        looks like it just emulates Linux in what it compiles as it didn't seem to
        naturally produce anything else... At least the architecture is right, so
        seems good for now at least!
      
      [1]: https://github.com/alexcrichton/port-of-rust/blob/master/prebuilt/freebsd/Dockerfile
      [2]: https://github.com/rust-lang/llvm/commit/be89e4b5
      [3]: https://bugs.webkit.org/show_bug.cgi?id=138420
      483fc715
    • B
      Auto merge of #32238 - frewsxcv:compiletest, r=alexcrichton · 4db8b5bf
      bors 提交于
      Utilize `Option::cloned` over explicit `clone` usage.
      4db8b5bf
    • B
      Auto merge of #32206 - alexcrichton:fix-windows-rustbuild, r=brson · 34b95a3c
      bors 提交于
      Fix Windows rustbuild
      
      These commits fix the rustbuild Windows bots, namely:
      
      * The 32-bit build of LLVM was failing because libraries weren't being linked. This was in turn caused by the build script for `rustc_llvm` erroneously detecting that it was cross compiling when it actually wasn't.
      * Tools of the build were compiled against the wrong libraries, so running them would fail on Windows as rpath didn't exist and `PATH` was wrong.
      * Some linkchecker fixes for Windows paths had to be applied as well.
      34b95a3c
    • B
      Auto merge of #30652 - aturon:specialization, r=nikomatsakis · 9ca75619
      bors 提交于
      Implement RFC 1210: impl specialization
      
      This PR implements [impl specialization](https://github.com/rust-lang/rfcs/pull/1210),
      carefully following the proposal laid out in the RFC.
      
      The implementation covers the bulk of the RFC. The remaining gaps I know of are:
      
      - no checking for lifetime-dependent specialization (a soundness hole);
      - no `default impl` yet;
      - no support for `default` with associated consts;
      
      I plan to cover these gaps in follow-up PRs, as per @nikomatsakis's preference.
      
      The basic strategy is to build up a *specialization graph* during
      coherence checking. Insertion into the graph locates the right place
      to put an impl in the specialization hierarchy; if there is no right
      place (due to partial overlap but no containment), you get an overlap
      error. Specialization is consulted when selecting an impl (of course),
      and the graph is consulted when propagating defaults down the
      specialization hierarchy.
      
      You might expect that the specialization graph would be used during
      selection -- i.e., when actually performing specialization. This is
      not done for two reasons:
      
      - It's merely an optimization: given a set of candidates that apply,
        we can determine the most specialized one by comparing them directly
        for specialization, rather than consulting the graph. Given that we
        also cache the results of selection, the benefit of this
        optimization is questionable.
      
      - To build the specialization graph in the first place, we need to use
        selection (because we need to determine whether one impl specializes
        another). Dealing with this reentrancy would require some additional
        mode switch for selection. Given that there seems to be no strong
        reason to use the graph anyway, we stick with a simpler approach in
        selection, and use the graph only for propagating default
        implementations.
      
      Trait impl selection can succeed even when multiple impls can apply,
      as long as they are part of the same specialization family. In that
      case, it returns a *single* impl on success -- this is the most
      specialized impl *known* to apply. However, if there are any inference
      variables in play, the returned impl may not be the actual impl we
      will use at trans time. Thus, we take special care to avoid projecting
      associated types unless either (1) the associated type does not use
      `default` and thus cannot be overridden or (2) all input types are
      known concretely.
      
      r? @nikomatsakis
      9ca75619
    • A
      rustbuild: Fix cross compiling to FreeBSD · 155735aa
      Alex Crichton 提交于
      This commit fixes our support for cross compiling a compiler to run on FreeBSD.
      Over the weekend I managed to get a cross compiler from Linux to FreeBSD [1]
      which I hope to soon use to start producing FreeBSD nightly compilers. With the
      `make dist` support added in #32237 we should be able to produce standard
      rustc/rust-std packages for FreeBSD through a new slave with this cross compiler.
      
      Currently, however, we don't "Just Work" when cross compiling FreeBSD and a
      number of changes were required (part of this PR). They include:
      
      * A few build fixes were needed in LLVM. Our own branch has been rebased on the
        actual 3.8 release and I applied one extra commit [2] which contains two fixes:
      
        1. The LLVM CMake build system passes the `-Wl,-z,defs` flag on many
           platforms, but *not* when `CMAKE_SYSTEM_NAME` is "FreeBSD". Unfortunately
           this doesn't take into account when we're cross compiling, and as predicted
           the build will fail if `-Wl,-z,defs` is passed (see [3] for more info). To
           fix this we test `TARGET_TRIPLE` instead of the `CMAKE_SYSTEM_NAME` which
           is what we're compiling for which fixes the problem.
        2. The `PATH_MAX` constant is apparently defined in a different location than
           many other Unix systems, so a file which required this just needed some
           help to keep compiling.
      
      * Support for compiling compiler-rt with CMake has been added to rustbuild. It
        looks like it just emulates Linux in what it compiles as it didn't seem to
        naturally produce anything else... At least the architecture is right, so
        seems good for now at least!
      
      [1]: https://github.com/alexcrichton/port-of-rust/blob/master/prebuilt/freebsd/Dockerfile
      [2]: https://github.com/rust-lang/llvm/commit/be89e4b5
      [3]: https://bugs.webkit.org/show_bug.cgi?id=138420
      155735aa
    • A
      Add pretty printer output for `default` · 6562eeb0
      Aaron Turon 提交于
      6562eeb0
    • A
      Adjust error code · dc45d924
      Aaron Turon 提交于
      dc45d924
    • A
      Parse fail test fixes · c4f78ad7
      Aaron Turon 提交于
      c4f78ad7
    • A
      Fixes after rebase · e5753b46
      Aaron Turon 提交于
      e5753b46