1. 13 9月, 2016 9 次提交
  2. 12 9月, 2016 10 次提交
    • B
      Auto merge of #36414 - nnethercote:char_lit, r=jseyfried · 88897037
      bors 提交于
      Improve char_lit's readability and speed
      
      This is my first contribution to rustc. Please let me know if I've done anything wrong. (I ran `make tidy` before making the pull request.)
      88897037
    • B
      Auto merge of #36406 - arielb1:constant-padding, r=eddyb · 85592fbe
      bors 提交于
      use `adt::trans_const` when translating constant closures and tuples
      
      The previous way dropped padding on the floor.
      
      Fixes #36401
      
      r? @EddyB
      85592fbe
    • B
      Auto merge of #36360 - orbea:docdir, r=alexcrichton · 00ce2c0f
      bors 提交于
      Allow setting --docdir
      
      This will allow setting `--docdir` during configure, this is useful because not all linux distributions install documentation to `/usr/share/doc`.  For example in Slackware documentation is installed to `/usr/doc/$PRGNAM-$VERSION` and `/usr/share/doc` is a symlink to `/usr/doc`.
      
      To use this `./configure --docdir=/usr/doc/$PRGNAM-$VERSION` can be used.
      00ce2c0f
    • N
      Lazily construct panic messages in char_lit(). · 826f6736
      Nicholas Nethercote 提交于
      This reduces the time taken to run
      `rustc -Zparse-only rustc-benchmarks/issue-32278-big-array-of-strings`
      from 0.18s to 0.15s on my machine, and reduces the number of
      instructions (as measured by Cachegrind) from 1.34B to 1.01B.
      
      With the change applied, the time to fully compile that benchmark is
      1.96s, so this is a 1.5% improvement.
      826f6736
    • N
      Avoid an unnecessary intermediate value in char_lit(). · 4c274b6a
      Nicholas Nethercote 提交于
      This makes the function more concise and easier to understand.
      4c274b6a
    • B
      Auto merge of #36355 - bluss:vec-extend-from-slice-aliasing-workaround, r=alexcrichton · 4d913235
      bors 提交于
      Work around pointer aliasing issue in Vec::extend_from_slice, extend_with_element
      
      Due to missing noalias annotations for &mut T in general (issue #31681),
      in larger programs extend_from_slice and extend_with_element may both
      compile very poorly. What is observed is that the .set_len() calls are
      not lifted out of the loop, even for `Vec<u8>`.
      
      Use a local length variable for the Vec length instead, and use a scope
      guard to write this value back to self.len when the scope ends or on
      panic. Then the alias analysis is easy.
      
      This affects extend_from_slice, extend_with_element, the vec![x; n]
      macro, Write impls for Vec<u8>, BufWriter, etc (but may / may not
      have triggered since inlining can be enough for the compiler to get it right).
      
      Fixes #32155
      Fixes #33518
      Closes #17844
      4d913235
    • B
      Auto merge of #36344 - sanxiyn:llvm-components, r=alexcrichton · 0f5f325f
      bors 提交于
      Use LLVM_COMPONENTS to run tests just for supported targets
      
      This is already done for simd-ffi test, but not for atomic-lock-free test.
      
      Fix #35023.
      0f5f325f
    • A
      use `adt::trans_const` when translating constant closures and tuples · f1bd9077
      Ariel Ben-Yehuda 提交于
      Fixes #36401
      f1bd9077
    • B
      Auto merge of #36308 - dtolnay:inputitem, r=alexcrichton · 0be88eb7
      bors 提交于
      Point macros 1.1 errors to the input item
      
      Moved from https://github.com/alexcrichton/rust/pull/6 to continue discussion. Fixes #36218.
      
      Before:
      
      ```rust
      error[E0106]: missing lifetime specifier
        --> src/main.rs:10:10
         |
      10 | #[derive(Serialize, Deserialize)]
         |          ^ expected lifetime parameter
      
      error[E0038]: the trait `T` cannot be made into an object
        --> src/main.rs:15:15
         |
      15 | #[derive(Serialize, Deserialize)]
         |          ^^^^^^^^^^ the trait `T` cannot be made into an object
      ```
      
      After:
      
      ```rust
      error[E0106]: missing lifetime specifier
        --> src/main.rs:11:1
         |
      11 | struct A {
         | ^ expected lifetime parameter
      
      error[E0038]: the trait `T` cannot be made into an object
        --> src/main.rs:16:1
         |
      16 | struct B<'a> {
         | ^ the trait `T` cannot be made into an object
      ```
      0be88eb7
    • B
      Auto merge of #36369 - uweigand:s390x, r=alexcrichton · 4812cf39
      bors 提交于
      Add s390x support
      
      This adds support for building the Rust compiler and standard
      library for s390x-linux, allowing a full cross-bootstrap sequence
      to complete.  This includes:
      
      - Makefile/configure changes to allow native s390x builds
      - Full Rust compiler support for the s390x C ABI
        (only the non-vector ABI is supported at this point)
      - Port of the standard library to s390x
      - Update the liblibc submodule to a version including s390x support
      - Testsuite fixes to allow clean "make check" on s390x
      
      Caveats:
      
      - Resets base cpu to "z10" to bring support in sync with the default
        behaviour of other compilers on the platforms.  (Usually, upstream
        supports all older processors; a distribution build may then chose
        to require a more recent base version.)  (Also, using zEC12 causes
        failures in the valgrind tests since valgrind doesn't fully support
        this CPU yet.)
      
      - z13 vector ABI is not yet supported.  To ensure compatible code
        generation, the -vector feature is passed to LLVM.  Note that this
        means that even when compiling for z13, no vector instructions
        will be used.  In the future, support for the vector ABI should be
        added (this will require common code support for different ABIs
        that need different data_layout strings on the same platform).
      
      - Two test cases are (temporarily) ignored on s390x to allow passing
        the test suite.  The underlying issues still need to be fixed:
        * debuginfo/simd.rs fails because of incorrect debug information.
          This seems to be a LLVM bug (also seen with C code).
        * run-pass/union/union-basic.rs simply seems to be incorrect for
          all big-endian platforms.
      Signed-off-by: NUlrich Weigand <ulrich.weigand@de.ibm.com>
      4812cf39
  3. 11 9月, 2016 1 次提交
  4. 10 9月, 2016 12 次提交
  5. 09 9月, 2016 8 次提交
    • B
      Auto merge of #36331 - petrochenkov:tyadt, r=eddyb · f1f40f85
      bors 提交于
      Refactor `TyStruct`/`TyEnum`/`TyUnion` into `TyAdt`
      
      r? @EddyB
      f1f40f85
    • B
      Auto merge of #36324 - nrc:save-docs, r=eddyb · 3344f893
      bors 提交于
      save-analysis bits and pieces
      3344f893
    • J
      Update the wording for E0063. This will truncate the fields to 3. · 0e32d118
      Jared Wyles 提交于
      Instead of listing every field it will now show missing `a`, `z`, `b`, and 1 other field
      0e32d118
    • O
      Allow setting --docdir · 5e9149d7
      orbea 提交于
      5e9149d7
    • B
      Auto merge of #36322 - uweigand:nonblocking, r=alexcrichton · 5440a1fa
      bors 提交于
      Fix argument to FIONBIO ioctl
      
      The FIONBIO ioctl takes as argument a pointer to an integer, which
      should be either 0 or 1 to indicate whether nonblocking mode is to
      be switched off or on.  The type of the pointed-to variable is "int".
      
      However, the set_nonblocking routine in libstd/sys/unix/net.rs passes
      a pointer to a libc::c_ulong variable.  This doesn't matter on all
      32-bit platforms and on all litte-endian platforms, but it will
      break on big-endian 64-bit platforms.
      
      Found while porting Rust to s390x (a big-endian 64-bit platform).
      Signed-off-by: NUlrich Weigand <ulrich.weigand@de.ibm.com>
      5440a1fa
    • B
      Auto merge of #36321 - uweigand:enum-abi, r=eddyb · 1df64450
      bors 提交于
      Follow target ABI sign-/zero-extension rules for enum types
      
      While attempting to port Rust to s390x, I ran into an ABI violation
      (that caused rust_eh_personality to be miscompiled, breaking unwinding).
      The problem is that this function returns an enum type, which is
      supposed to be sign-extended according to the s390x ABI.  However,
      common code would ignore target sign-/zero-extension rules for any
      types that do not satisfy is_integral(), which includes enums.
      
      For the general case of Rust enum types, which map to structure types
      with a discriminant, that seems correct.  However, in the special case
      of simple enums that map directly to C enum types (i.e. LLVM integers),
      this is incorrect; we must follow the target extension rules for those.
      Signed-off-by: NUlrich Weigand <ulrich.weigand@de.ibm.com>
      1df64450
    • J
      tweaking the nodejs cmd sanity check · 89bc13c3
      Jake Goldsborough 提交于
      89bc13c3
    • U
      Work around pointer aliasing issue in Vec::extend_from_slice, extend_with_element · 765700ba
      Ulrik Sverdrup 提交于
      Due to missing noalias annotations for &mut T in general (issue #31681),
      in larger programs extend_from_slice and extend_with_element may both
      compile very poorly. What is observed is that the .set_len() calls are
      not lifted out of the loop, even for `Vec<u8>`.
      
      Use a local length variable for the Vec length instead, and use a scope
      guard to write this value back to self.len when the scope ends or on
      panic. Then the alias analysis is easy.
      
      This affects extend_from_slice, extend_with_element, the vec![x; n]
      macro, Write impls for Vec<u8>, BufWriter, etc (but may / may not
      have triggered since inlining can be enough for the compiler to get it right).
      765700ba