about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2020-05-06Rollup merge of #71591 - hermitcore:thread_create, r=hanna-kruppeDylan DPC-8/+7
use new interface to create threads on HermitCore - the new interface allows to define the stack size - increase the default stack size to 1 MByte
2020-05-06Rollup merge of #71269 - Mark-Simulacrum:sat-float-casts, r=nikicDylan DPC-52/+420
Define UB in float-to-int casts to saturate This closes #10184 by defining the behavior there to saturate infinities and values exceeding the integral range (on the lower or upper end). `NaN` is sent to zero.
2020-05-06Remove warning about UBMark Rousskov-7/+0
2020-05-06Fixup tests to test both const-eval and runtimeMark Rousskov-99/+22
2020-05-06Pull in miri test casesMark Rousskov-5/+458
2020-05-06Define UB in float-to-int casts to saturateMark Rousskov-11/+10
- Round to zero, and representable values cast directly. - `NaN` goes to 0 - Values beyond the limits of the type are saturated to the "nearest value" (essentially rounding to zero, in some sense) in the integral type, so e.g. `f32::INFINITY` would go to `{u,i}N::MAX.`
2020-05-06Rollup merge of #71921 - RalfJung:open-mode, r=hanna-kruppeDylan DPC-0/+4
explain the types used in the open64 call Fixes https://github.com/rust-lang/rust/issues/71915, where I learned about this quirk. I don't actually know what I am talking about here. ;)
2020-05-06Rollup merge of #71905 - mibac138:x-cmd-alias, r=Mark-SimulacrumDylan DPC-13/+17
Add command aliases from Cargo to x.py commands Fixes #71357
2020-05-06Rollup merge of #71889 - RalfJung:rwlock, r=AmanieuDylan DPC-22/+36
Explain our RwLock implementation Turns out that [with the latest POSIX docs](https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_rwlock_wrlock.html), our `RwLock` implementation is actually correct. However, we cannot fully rely on that due to bugs in older glibc (fix released in 2016). Update the comments to explain that. I also clarified our Mutex docs a bit and fixed another instance of https://github.com/rust-lang/rust/pull/55865. r? @Amanieu Fixes https://github.com/rust-lang/rust/issues/53127
2020-05-06Rollup merge of #71727 - hbina:simplified_usage, r=Mark-SimulacrumDylan DPC-3/+3
SipHasher with keys initialized to 0 should just use new() I believe that is what the `new()` is for, for good reasons.
2020-05-06Rollup merge of #71510 - ssomers:btreemap_iter_intertwined, r=Mark-SimulacrumDylan DPC-75/+119
Btreemap iter intertwined 3 commits: 1. Introduced benchmarks for `BTreeMap::iter()`. Benchmarks named `iter_20` were of the whole iteration process, so I renamed them. Also the benchmarks of `range` that I wrote earlier weren't very good. I included an (awkwardly named) one that compares `iter()` to `range(..)` on the same set, because the contrast is surprising: ``` name ns/iter btree::map::range_unbounded_unbounded 28,176 btree::map::range_unbounded_vs_iter 89,369 ``` Both dig up the same pair of leaf edges. `range(..)` also checks that some keys are correctly ordered, the only thing `iter()` does more is to copy the map's length. 2. Slightly refactoring the code to what I find more readable (not in chronological order of discovery), boosts performance: ``` >cargo-benchcmp.exe benchcmp a1 a2 --threshold 5 name a1 ns/iter a2 ns/iter diff ns/iter diff % speedup btree::map::find_rand_100 18 17 -1 -5.56% x 1.06 btree::map::first_and_last_10k 64 71 7 10.94% x 0.90 btree::map::iter_0 2,939 2,209 -730 -24.84% x 1.33 btree::map::iter_1 6,845 2,696 -4,149 -60.61% x 2.54 btree::map::iter_100 8,556 3,672 -4,884 -57.08% x 2.33 btree::map::iter_10k 9,292 5,884 -3,408 -36.68% x 1.58 btree::map::iter_1m 10,268 6,510 -3,758 -36.60% x 1.58 btree::map::iteration_mut_100000 478,575 453,050 -25,525 -5.33% x 1.06 btree::map::range_unbounded_unbounded 28,176 36,169 7,993 28.37% x 0.78 btree::map::range_unbounded_vs_iter 89,369 38,290 -51,079 -57.16% x 2.33 btree::set::clone_100_and_remove_all 4,801 4,245 -556 -11.58% x 1.13 btree::set::clone_10k_and_remove_all 529,450 496,030 -33,420 -6.31% x 1.07 ``` But you can tell from the `range_unbounded_*` lines that, despite an unwarranted, vengeful attack on the range_unbounded_unbounded benchmark, this change still doesn't allow `iter()` to catch up with `range(..)`. 3. I guess that `range(..)` copes so well because it intertwines the leftmost and rightmost descend towards leaf edges, doing the two root node accesses close together, perhaps exploiting a CPU's internal pipelining? So the third commit distils a version of `range_search` (which we can't use directly because of the `Ord` bound), and we get another boost: ``` cargo-benchcmp.exe benchcmp a2 a3 --threshold 5 name a2 ns/iter a3 ns/iter diff ns/iter diff % speedup btree::map::first_and_last_100 40 43 3 7.50% x 0.93 btree::map::first_and_last_10k 71 64 -7 -9.86% x 1.11 btree::map::iter_0 2,209 1,719 -490 -22.18% x 1.29 btree::map::iter_1 2,696 2,205 -491 -18.21% x 1.22 btree::map::iter_100 3,672 2,943 -729 -19.85% x 1.25 btree::map::iter_10k 5,884 3,929 -1,955 -33.23% x 1.50 btree::map::iter_1m 6,510 5,532 -978 -15.02% x 1.18 btree::map::iteration_mut_100000 453,050 476,667 23,617 5.21% x 0.95 btree::map::range_included_excluded 405,075 371,297 -33,778 -8.34% x 1.09 btree::map::range_included_included 427,577 397,440 -30,137 -7.05% x 1.08 btree::map::range_unbounded_unbounded 36,169 28,175 -7,994 -22.10% x 1.28 btree::map::range_unbounded_vs_iter 38,290 30,838 -7,452 -19.46% x 1.24 ``` But I think this is just fake news from the microbenchmarking media. `iter()` is still trying to catch up with `range(..)`. And we can sure do without another function. So I would skip this 3rd commit. r? @Mark-Simulacrum
2020-05-06Auto merge of #69464 - Marwes:detach_undo_log, r=nikomatsakisbors-533/+882
perf: Unify the undo log of all snapshot types Extracted from #69218 and extended to all the current snapshot types. Since snapshotting is such a frequent action in the compiler and many of the scopes execute so little work, the act of creating the snapshot and rolling back empty/small snapshots end up showing in perf. By unifying all the logs into one the creation of snapshots becomes significantly cheaper at the cost of some complexity when combining the log with the specific data structures that are being mutated. Depends on https://github.com/rust-lang-nursery/ena/pull/29
2020-05-05Auto merge of #71875 - Xanewok:update-rls, r=tmandrybors-2/+6
Update RLS In addition to fixing the toolstate, this also changes the default compilation model to the out-of-process one, which should hopefully target considerable memory usage for long-running instances of the RLS. Fixes #71753 r? @ghost
2020-05-05Unify winapi features for toolsTyler Mandry-1/+2
2020-05-05explain the types used in the open64 callRalf Jung-0/+4
2020-05-05Unify some syn 1.0 et al. features for toolsIgor Matuszewski-1/+4
2020-05-05Update RLSIgor Matuszewski-0/+0
In addition to fixing the toolstate, this also changes the default compilation model to the out-of-process one, which should hopefully target considerable memory usage for long-running instances of the RLS.
2020-05-05Rollup merge of #71897 - alexcrichton:embed-bitcode-docs, r=nnethercoteDylan DPC-8/+36
Improve docs for embed-bitcode and linker-plugin-lto Follow-up from #71716 I wasn't able to add in time.
2020-05-05Rollup merge of #71894 - mibac138:semicolon-not-always-helpful, r=estebankDylan DPC-4/+30
Suggest removing semicolon in last expression only if it's type is known Fixes #67971 Is there a syntax for explicitly checking if a note doesn't exist in test output? Something like `//~ !NOTE ...` I believe r? @estebank deals with diagnostics.
2020-05-05Rollup merge of #71830 - oli-obk:subrepo_funness, r=Mark-SimulacrumDylan DPC-7/+1
Remove clippy from some leftover lists of "possibly failing" tools https://github.com/rust-lang/rust/pull/70655 successfully made clippy get built and tested on CI on every merge, but the lack of emitted toolstate info caused the toolstate to get updated to test-fail. We should remove clippy entirely from toolstate, as it now is always test-pass. The changes made in this PR reflect what we do for `rustdoc`, which is our preexisting tool that is gated on CI. r? @Mark-Simulacrum
2020-05-05Rollup merge of #69984 - lenary:lenary/force-uwtables, r=hanna-kruppeDylan DPC-5/+89
Add Option to Force Unwind Tables When panic != unwind, `nounwind` is added to all functions for a target. This can cause issues when a panic happens with RUST_BACKTRACE=1, as there needs to be a way to reconstruct the backtrace. There are three possible sources of this information: forcing frame pointers (for which an option exists already), debug info (for which an option exists), or unwind tables. Especially for embedded devices, forcing frame pointers can have code size overheads (RISC-V sees ~10% overheads, ARM sees ~2-3% overheads). In production code, it can be the case that debug info is not kept, so it is useful to provide this third option, unwind tables, that users can use to reconstruct the call stack. Reconstructing this stack is harder than with frame pointers, but it is still possible. --- This came up in discussion on #69890, and turned out to be a fairly simple addition. r? @hanna-kruppe
2020-05-05Restore the snapshot/rollback optimization for region constraintsMarkus Westerlind-13/+29
2020-05-05refactor: Replace probe_fudge by an explict call for the lengthsMarkus Westerlind-59/+23
2020-05-05refactor: Move probe_fudge into fudge.rsMarkus Westerlind-42/+41
2020-05-05Improve namingMarkus Westerlind-14/+31
2020-05-05Generate the UndoLog upcasts with a macroMarkus Westerlind-56/+22
2020-05-05Fix review commentsMarkus Westerlind-98/+58
2020-05-05Rebase and use ena 0.14Markus Westerlind-55/+70
2020-05-05refactor: simplifyMarkus Westerlind-15/+14
2020-05-05Prevent modifications without an undo logMarkus Westerlind-25/+25
2020-05-05Fix importMarkus Westerlind-1/+1
2020-05-05refactor: Extract the undo log to its own modulesMarkus Westerlind-230/+272
2020-05-05refactor: Rename Logs to InferCtxtUndoLogsMarkus Westerlind-23/+42
2020-05-05simplifyMarkus Westerlind-20/+6
2020-05-05perf: Merge region_obligations snapshotting into the undo logMarkus Westerlind-21/+23
2020-05-05perf: Limit leak check snapshotting to probe_maybe_skip_leak_checkMarkus Westerlind-8/+5
2020-05-05perf: Lazily recive the Rollback argument in rollback_toMarkus Westerlind-10/+17
2020-05-05perf: Separate CombinedSnapshot into a FullSnapshot for probingMarkus Westerlind-19/+33
2020-05-05Move projection_cache into the combined undo logMarkus Westerlind-42/+78
2020-05-05Allow SnapshotMap to have a separate undo_logMarkus Westerlind-96/+62
2020-05-05Move region_constraint to the unified undo logMarkus Westerlind-166/+183
2020-05-05perf: Reduce snapshot/rollback overheadMarkus Westerlind-189/+516
By merging the undo_log of all structures part of the snapshot the cost of creating a snapshot becomes much cheaper. Since snapshots with no or few changes are so frequent this ends up mattering more than the slight overhead of dispatching on the variants that map to each field.
2020-05-05Allow `hir().find` to return `None`John Kåre Alsaker-18/+18
2020-05-05rely on rdlock/wrlock not returning anything but the specified error codesRalf Jung-2/+6
2020-05-05Auto merge of #71846 - petrochenkov:fresh2, r=davidtwcobors-6/+11
resolve: Relax fresh binding disambiguation slightly to fix regression Fixes https://github.com/rust-lang/rust/issues/71765
2020-05-05Suggest removing semicolon in last expression only if it's type is knownmibac138-4/+30
2020-05-05Rollup merge of #71904 - euclio:function-typo, r=jonas-schievinkDylan DPC-3/+3
fix typo in function name Drive-by fix.
2020-05-05Rollup merge of #71902 - mibac138:const-feature-diag, r=varkorDylan DPC-0/+70
Suggest to add missing feature when using gated const features Fixes #71797
2020-05-05Rollup merge of #71892 - integer32llc:btreemap-entry-vacant-docs, ↵Dylan DPC-6/+5
r=jonas-schievink Update btree_map::VacantEntry::insert docs to actually call insert It looks like they were copied from the `or_insert` docs. This change makes the example more like the hash_map::VacantEntry::insert docs.
2020-05-05Rollup merge of #71891 - lcnr:not-iter-any, r=Dylan-DPCDylan DPC-1/+1
¬∃x. ¬y => ∀x. y