Commit Graph

96306 Commits

Author SHA1 Message Date
Mark Rousskov
4783d9eaa5 Remove is_begin/is_end functions from PrintState
These are somewhat ambiguous (beginning/end of what?) so it's better to
inline their one use into the code.
2019-07-10 07:12:29 -04:00
Mark Rousskov
57cf7a2e57 Simplify print_end
Presumably the code was from an older age of Rust and can now be written
much simpler.
2019-07-10 07:12:29 -04:00
Mark Rousskov
55a6a761b9 Simplify check_stack implementation 2019-07-10 07:12:29 -04:00
Mark Rousskov
cd2d8326a5 Move BufEntry assignment into scan_push 2019-07-10 07:12:28 -04:00
Mark Rousskov
ccf279d9c3 Remove useless call to indent 2019-07-10 07:12:28 -04:00
Mark Rousskov
4c58fc32ae Fully privatize (vs. crate visibility) functions 2019-07-10 07:12:28 -04:00
Mark Rousskov
00ca508608 Move pp::Printer out field to owned String
This enforces that eof() must be called to get the String out, and
generally is better from an API perspective. No users of pretty printing
pre-allocate the buffer.
2019-07-10 07:12:28 -04:00
Mark Rousskov
e0ffa7c3d2 Inline State::new_from_input in pprust
This function took too many arguments and are simple on the inside;
inlining them makes complexity go down.

hir::print's copy is unfortunately used from librustc_driver so inlining
it is not as straightforward.
2019-07-10 07:12:28 -04:00
Mark Rousskov
e0db2e606c print_crate returns String instead of taking an out pointer 2019-07-10 07:12:28 -04:00
Mark Rousskov
7e3791469f Replace src: &mut dyn Read with String 2019-07-10 07:12:28 -04:00
Mark Rousskov
0eb2e566c1 Combine comment-handling logic into struct
This also permits sharing the underlying code between pprust and
hir::print.
2019-07-10 07:12:28 -04:00
Mark Rousskov
9b5e39723d Inline State::new
There was only one callsite for each and this removes the
unwrap_or_default's on the comments argument
2019-07-10 07:12:28 -04:00
Mark Rousskov
59b161c7c8 Stop Option-wrapping comments
We always check against the length before indexing anyway.
2019-07-10 07:12:28 -04:00
Mark Rousskov
a573d143a2 Remove unused boxes vector 2019-07-10 07:12:28 -04:00
Mark Rousskov
4483980285 Privatize and remove unused functions 2019-07-10 07:12:26 -04:00
Mark Rousskov
ae5ed9b729 Don't re-collect tokenstream twice to pretty print 2019-07-10 07:11:29 -04:00
Mark Rousskov
11d521676f Move lifetime_to_string to Display impl 2019-07-10 07:11:29 -04:00
Mark Rousskov
a440337e2b Remove unused arm_to_string 2019-07-10 07:11:29 -04:00
Mark Rousskov
0f10d114e4 Remove duplicate attr_to_string
attribute_to_string exists.
2019-07-10 07:11:29 -04:00
Mark Rousskov
9b0ebfa4e9 Move literal_to_string to fmt::Display 2019-07-10 07:11:29 -04:00
bors
d4e1565509 Auto merge of #62441 - RalfJung:place-ptr-normalization, r=oli-obk
Miri: Provide pointer forcing methods for MemPlace and Op

These are useful when one wants to to a lot of work with some place or operand and not to int-to-ptr casts all the time. In particular, this is needed to fix some test failures in Miri: we need to normalize before starting a visitor that walks a run-time value, so that we can later be sure (during the visitor walk) that we have a proper `Pointer`.

Also see the Miri side at https://github.com/rust-lang/miri/pull/830.

Cc @eddyb @oli-obk
2019-07-10 08:59:15 +00:00
Taiki Endo
70e8ba38b6 Fix typo in libcore/intrinsics.rs 2019-07-10 16:27:39 +09:00
bors
0324a2b309 Auto merge of #62555 - Centril:rollup-ti46adx, r=Centril
Rollup of 5 pull requests

Successful merges:

 - #61853 (Emit warning when trying to use PGO in conjunction with unwinding on …)
 - #62278 (Add Iterator::partition_in_place() and is_partitioned())
 - #62283 (Target::arch can take more than listed options)
 - #62393 (Fix pretty-printing of `$crate` (take 4))
 - #62474 (Prepare for LLVM 9 update)

Failed merges:

r? @ghost
2019-07-10 05:21:43 +00:00
Chris Gregory
76a8bc2473 Use fold in Iterator::last
Replace last impl with fold
2019-07-09 21:26:49 -07:00
Mazdak Farrokhzad
6c0a406b1c
Rollup merge of #62474 - nikic:update-llvm, r=alexcrichton
Prepare for LLVM 9 update

Main changes:

 * In preparation for opaque pointer types, the `byval` attribute now takes a type. As such, the argument type needs to be threaded through to the function/callsite attribute application logic.
 * On ARM the `+fp-only-sp` and `+d16` features have become `-fp64` and `-d32`. I've switched the target definitions to use the new names, but also added bidirectional emulation so either can be used on any LLVM version for backwards compatibility.
 * The datalayout can now specify function pointer alignment. In particular on ARM `Fi8` is specified, which means that function pointer alignment is independent of function alignment. I've added this to our datalayouts to match LLVM (which is something we check) and strip the fnptr alignment for older LLVM versions.
 * The fmul/fadd reductions now always respect the accumulator (including for unordered reductions), so we should pass the identity instead of undef.

Open issues:

 * https://reviews.llvm.org/D62106 causes linker errors with ld.bdf due to https://sourceware.org/bugzilla/show_bug.cgi?id=24784. To avoid this I've enabled `RelaxELFRelocations`, which results in a GOTPCRELX relocation for `__tls_get_addr` and avoids the issue. However, this is likely not acceptable because relax relocations are not supported by older linker versions. We may need an LLVM option to keep using PLT for `__tls_get_addr` despite `RtLibUseGOT`.

The corresponding llvm-project PR is https://github.com/rust-lang/llvm-project/pull/19.

r? @ghost
2019-07-10 05:14:10 +02:00
Mazdak Farrokhzad
fe26fc9a1c
Rollup merge of #62393 - petrochenkov:notto-disu, r=Mark-Simulacrum
Fix pretty-printing of `$crate` (take 4)

Pretty-print `$crate` as `crate` or `crate_name` in unstructured tokens like `a $crate c` in `foo!(a $crate c)`, but only if those tokens are printed as a part of AST pretty-printing, rather than as a standalone token stream.

Fixes https://github.com/rust-lang/rust/issues/62325
Previous iterations - https://github.com/rust-lang/rust/pull/56647, https://github.com/rust-lang/rust/pull/57155, https://github.com/rust-lang/rust/pull/57915.
2019-07-10 05:14:09 +02:00
Mazdak Farrokhzad
1e48be948a
Rollup merge of #62283 - fintelia:patch-5, r=Mark-Simulacrum
Target::arch can take more than listed options

A list of options in a comment like this is almost guaranteed to become out of date: right now it is missing "riscv32" and "riscv64" and perhaps other architectures as well.
2019-07-10 05:14:07 +02:00
Mazdak Farrokhzad
b14b20c638
Rollup merge of #62278 - cuviper:iter-partition, r=alexcrichton
Add Iterator::partition_in_place() and is_partitioned()

`partition_in_place()` swaps `&mut T` items in-place to satisfy the
predicate, so all `true` items precede all `false` items. This requires
a `DoubleEndedIterator` so we can search from front and back for items
that need swapping.

`is_partitioned()` checks whether the predicate is already satisfied.
2019-07-10 05:14:06 +02:00
Mazdak Farrokhzad
3c3e3756b0
Rollup merge of #61853 - EricRahm:use_warning, r=varkor
Emit warning when trying to use PGO in conjunction with unwinding on …

…Windows.

This reduces the error introduced for #61002 to just a warning.
2019-07-10 05:14:04 +02:00
bors
3f435f622e Auto merge of #62548 - ehuss:update-cargo, r=alexcrichton
Update cargo

Update cargo

12 commits in 4c1fa54d10f58d69ac9ff55be68e1b1c25ecb816..677a180f4c8ca1dcef594f68dd0e63e4f08621f5
2019-06-24 11:24:18 +0000 to 2019-07-08 13:43:02 +0000
- Update dependencies (rust-lang/cargo#7106)
- Fix overwriting .d file for binary with dSYM on apple targets. (rust-lang/cargo#7057)
- Update changelog. (rust-lang/cargo#7102)
- Revert "Fix 'getting started' internal links" (rust-lang/cargo#7099)
- Bump to 0.39.0 (rust-lang/cargo#7100)
- Update dependency.rs (rust-lang/cargo#7098)
- Typo (rust-lang/cargo#7097)
- Fix 'getting started' internal links (rust-lang/cargo#7093)
- Fix misleading comment in testsuite (rust-lang/cargo#7090)
- improve uncommitted changes cargo-package message (rust-lang/cargo#7083)
- Clean environment when git-fetch-with-cli is used. (rust-lang/cargo#7082)
- Fix exponentiality in depend_on_deps_of_deps. (rust-lang/cargo#7062)
2019-07-10 01:53:04 +00:00
Eric Huss
03a4068152 Update cargo 2019-07-09 16:47:45 -07:00
Eric Huss
06c3256a6b Update cargo-vendor usage 2019-07-09 16:12:41 -07:00
Josh Stone
7171c83ab2 Tracking issue 62544 for iter_is_partitioned 2019-07-09 15:18:33 -07:00
Josh Stone
4c22e48f6e Tracking issue 62543 for iter_partition_in_place 2019-07-09 15:17:47 -07:00
bors
e7efdf1c33 Auto merge of #62542 - Centril:rollup-5mpb8tu, r=Centril
Rollup of 9 pull requests

Successful merges:

 - #62417 (Fix ICEs when `Self` is used in type aliases)
 - #62450 (Raise the default recursion limit to 128)
 - #62470 (Prevent shrinking of "crate select" element on Firefox)
 - #62515 (cli: make help output for -l and -L consistent)
 - #62520 (Regression test for issue 42574.)
 - #62526 (normalize use of backticks in compiler messages for libsyntax/feature_gate.rs)
 - #62527 (clarify that debug_assert does not completely omits the code)
 - #62535 (ci: Configure $CI_JOB_NAME correctly)
 - #62541 (Add spastorino for rustc-guide toolstate)

Failed merges:

r? @ghost
2019-07-09 22:02:58 +00:00
Eric Rahm
74a39a39a4 Emit warning when trying to use PGO in conjunction with unwinding on Windows. 2019-07-09 17:17:30 -04:00
Nikita Popov
ac560258e3 Adjust codegen tests for DISPFlagMainSubprogram 2019-07-09 21:55:29 +02:00
Nikita Popov
5c95f5fa6b Fix float add/mul reduction codegen
The accumulator is now respected for unordered reductions.
2019-07-09 21:55:29 +02:00
Nikita Popov
8789c9e595 Strip function pointer alignment for older LLVM versions 2019-07-09 21:55:29 +02:00
Nikita Popov
5324b42a59 Add function pointer alignment to ARM/Thumb data layout 2019-07-09 21:55:29 +02:00
Nikita Popov
3170b62cca Use new feature names in target feature lists 2019-07-09 21:55:29 +02:00
Nikita Popov
b57c499ea2 Translate target features for LLVM 9 2019-07-09 21:55:29 +02:00
Nikita Popov
eb33822091 Pass type to byval attributes 2019-07-09 21:55:29 +02:00
Nikita Popov
04304fcd16 Pass GUIDPreservedSymbols to thinLTOResolvePrevailingInIndex() 2019-07-09 21:55:29 +02:00
Vadim Petrochenkov
4cb67c0f1c Add a test case with $crate from other crate 2019-07-09 22:45:25 +03:00
Josh Stone
265e3a6230 Unit test Iterator::partition_in_place and is_partitioned 2019-07-09 12:39:25 -07:00
Josh Stone
0492f972c7 Return the true count from partition_in_place 2019-07-09 12:39:25 -07:00
Josh Stone
cd0ebc43c7 Rename partition_mut to partition_in_place 2019-07-09 12:39:25 -07:00
Josh Stone
cdeec0a618 Capitalize example comment
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-07-09 12:39:25 -07:00
Josh Stone
60f1449b61 Add Iterator::partition_mut() and is_partitioned()
`partition_mut()` swaps `&mut T` items in-place to satisfy the
predicate, so all `true` items precede all `false` items. This requires
a `DoubleEndedIterator` so we can search from front and back for items
that need swapping.

`is_partitioned()` checks whether the predicate is already satisfied.
2019-07-09 12:39:25 -07:00