about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2020-04-20Fix codegen and mir-opt testsJonas Schievink-19/+18
Mostly renamed allocations, but I'm not sure about the const prop tests
2020-04-20Update const propJonas Schievink-5/+5
2020-04-20Dump return_place upon returningJonas Schievink-0/+1
2020-04-20Fix pop_stack_frame logicJonas Schievink-22/+7
2020-04-20Remove null placesJonas Schievink-21/+0
2020-04-20Treat RETURN_PLACE as a normal LocalJonas Schievink-70/+42
Copy its value to the `return_place` upon leaving a call frame
2020-04-20Auto merge of #70729 - nnethercote:a-big-options-clean-up, r=petrochenkovbors-379/+339
A big options clean-up Lots of improvements here. r? @Centril
2020-04-20Auto merge of #71232 - eddyb:print-const-adts, r=oli-obkbors-103/+128
ty/print: pretty-print constant aggregates (arrays, tuples and ADTs). Oddly enough, we don't have any UI tests showing this off in types, only `mir-opt` tests. However, the pretty form should show up in the test output diff of #71018, if this PR is merged first. <hr/> Examples of before/after: |`Option<bool>`| |:-:| |`{transmute(0x01): std::option::Option<bool>}`| | :sparkles: ↓↓↓ :sparkles: | |`std::option::Option::<bool>::Some(true)`| | `RawVec<u32>` | |:-:| | `ByRef { alloc: Allocation { bytes: [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], relocations: Relocations(SortedMap { data: [] }), undef_mask: UndefMask { blocks: [65535], len: Size { raw: 16 } }, size: Size { raw: 16 }, align: Align { pow2: 3 }, mutability: Not, extra: () }, offset: Size { raw: 0 } }: alloc::raw_vec::RawVec::<u32>`| | :sparkles: ↓↓↓ :sparkles: | |`alloc::raw_vec::RawVec::<u32> { ptr: std::ptr::Unique::<u32> { pointer: {0x4 as *const u32}, _marker: std::marker::PhantomData::<u32> }, cap: 0usize, alloc: std::alloc::Global }`| <hr/> This PR is a prerequisite for #61486, *sort of*, in that we need to be able to pretty-print values in order to even consider how we might mangle them. We still don't have pretty-printing for constants of reference types, @oli-obk has the necessary support logic in a PR but I didn't want to interfere with that. <hr/> Each commit should be reviewed separately, as I've fixed a couple deficiencies along the way. r? @oli-obk cc @rust-lang/wg-mir-opt @varkor @yodaldevoid
2020-04-20Auto merge of #71007 - Amanieu:deprecate_asm, r=Mark-Simulacrumbors-5/+34
Deprecate the asm! macro in favor of llvm_asm! Since we will be changing the syntax of `asm!` soon, deprecate it and encourage people to use `llvm_asm!` instead (which preserves the old syntax). This will avoid breakage when `asm!` is changed. RFC: https://github.com/rust-lang/rfcs/pull/2843
2020-04-19Auto merge of #70598 - vakaras:add-threads-cr3, r=oli-obk,RalfJungbors-70/+172
Make the necessary changes to support concurrency in Miri. This pull request makes the necessary changes to the Rust compiler to allow Miri to support concurrency: 1. Move stack from the interpretation context (`InterpCx`) to machine, so that the machine can switch the stacks when it changes the thread being executed. 2. Add the callbacks that allow the machine to generate fresh allocation ids for each thread local allocation and to translate them back to original allocations when needed. This allows the machine to ensure the property that allocation ids are unique, which allows using a simpler representation of the memory. r? @oli-obk cc @RalfJung
2020-04-19Auto merge of #71331 - Dylan-DPC:rollup-5rn1isc, r=Dylan-DPCbors-13/+78
Rollup of 4 pull requests Successful merges: - #71026 (Fix false "never constructed" warnings for `Self::` variant paths) - #71310 (Do not show DefId in diagnostics) - #71317 (miri-unleash test for llvm_asm) - #71324 (Fix some tests failing in `--pass check` mode) Failed merges: r? @ghost
2020-04-19Rollup merge of #71324 - petrochenkov:passcheck2, r=RalfJungDylan DPC-3/+3
Fix some tests failing in `--pass check` mode r? @RalfJung
2020-04-19Rollup merge of #71317 - RalfJung:unleash-inline-asm, r=ecstatic-morseDylan DPC-0/+25
miri-unleash test for llvm_asm r? @oli-obk @ecstatic-morse
2020-04-19Rollup merge of #71310 - JohnTitor:dont-did, r=estebankDylan DPC-8/+26
Do not show DefId in diagnostics Fixes #71222 r? @estebank cc @eddyb
2020-04-19Rollup merge of #71026 - seiyab:issue-64362-adhoc, r=varkorDylan DPC-2/+24
Fix false "never constructed" warnings for `Self::` variant paths Closes #64362 .
2020-04-19Fix commentRalf Jung-3/+2
2020-04-19Auto merge of #71231 - cuviper:rustc_or_patterns, r=Mark-Simulacrumbors-688/+759
Dogfood more or_patterns in the compiler Another step toward the stabilization of `or_patterns`... cc #54883 @Centril r? @Mark-Simulacrum
2020-04-19Dogfood more or_patterns in the compilerJosh Stone-688/+759
2020-04-19Fix some tests failing in `--pass check` modeVadim Petrochenkov-3/+3
2020-04-19Rollup merge of #71319 - GuillaumeGomez:cleanup-e0522, r=Dylan-DPCDylan DPC-4/+7
Clean up E0522 explanation r? @Dylan-DPC
2020-04-19Rollup merge of #71315 - huangjiahua:update-documentation, r=Dylan-DPCDylan DPC-0/+18
Add example in the alternative in std::mem::transmute docs It is safer to use `from_ne_bytes` to convert raw bytes to type like u32. #71187
2020-04-19Rollup merge of #71188 - Duddino:fix, r=matthewjasperDylan DPC-10/+32
Fixed missing trait method suggests incorrect code (self parameter not named "self"). fixes #71150
2020-04-19Rollup merge of #71107 - vorner:weak-into-raw-dangling, r=AmanieuDylan DPC-54/+80
Address concerns of weak-into-raw This should address the standing concerns in https://github.com/rust-lang/rust/issues/60728#issuecomment-612525616. I've still left the ability to create a new dangling pointer from `null`, as I feel like this is the natural behaviour to expect, but I'm fine removing that too. I've modified the documentation to allow the `as_ptr` or `into_ptr` to return whatever garbage in case of a dangling pointer. I've also removed the guarantee to be able to do `from_raw(as_ptr)` from the documentation (but it would still work right now). I've renamed the method and added implementations for `Rc`/`Arc`. I've also tried if I can just „enable“ unsized types. I believe the current interface is compatible with them. But the inner implementation will be a bit challenging ‒ I can't use the `data_offset` as is used by `Rc` or `Arc` because it AFAIK „touches“ (creates a reference to) the live value of `T` ‒ and in case of `Weak`, it might be completely bogus or already dead ‒ so that would be UB. `./x.py test tidy` is completely mad on my own system all over the code base :-(. I'll just hope it goes through CI, or will fix as necessary. Is it OK if I ask @Amanieu for review, as the concerns are from you? ~r @Amanieu
2020-04-19Fix false "never constructed" warnings for `Self::` variant pathsseiya-1/+3
2020-04-19test for false "never constructed" warnings for `Self::` variant pathsjakubadamw-1/+21
2020-04-19Clean up E0522 explanationGuillaume Gomez-4/+7
2020-04-19miri-unleash test for llvm_asmRalf Jung-0/+26
2020-04-19Disallow values for `-C no-*` and `-Z no-*` options again.Nicholas Nethercote-41/+40
With the exception of `-C no-redzone`, because that could take a value before this PR. This partially undoes one of the earlier commits in this PR, which added the ability to take a value to all boolean options that lacked it. The help output for these options looks like this: ``` -C no-vectorize-slp=val -- disable LLVM's SLP vectorization pass ``` The "=val" part is a lie, but hopefully this will be fixed in the future.
2020-04-19Improve codegen option docs.Nicholas Nethercote-84/+101
This commit: - Adds "following values" indicators for all the options that are missing them. - Tweaks some wording and punctuation for consistency. - Rewords some things for clarity. - Removes the `no-integrated-as` entry, because that option was removed in #70345.
2020-04-19Show defaults in options descriptions.Nicholas Nethercote-99/+109
For all `-C` and `-Z` options that have them. The commit also rewords a few options to make them clearer, mostly by avoiding the word "don't". It also removes the listed default for `-Cinline-threshold`, which is incorrect -- that option doesn't have a static default.
2020-04-19Auto merge of #70015 - jonas-schievink:gen-needs-drop, r=matthewjasperbors-44/+85
Make `needs_drop` less pessimistic on generators Generators only have non-trivial drop logic when they may store (in upvars or across yields) a type that does. This prevents generation of some unnecessary MIR in simple generators. There might be some impact on compile times, but this is probably limited in real-world applications. ~~This builds off of https://github.com/rust-lang/rust/pull/69814 since that contains some fixes that are made relevant by *this* PR (see https://github.com/rust-lang/rust/pull/69814#issuecomment-599147269).~~ (this has been merged)
2020-04-19Replace uses of `parse_opt_*` with `parse_*` where possible.Nicholas Nethercote-67/+50
This lets us specify the default at the options declaration point, instead of using `.unwrap(default)` or `None | Some(default)` at some use point far away. It also makes the code more concise.
2020-04-19Make option type descriptions non-optional.Nicholas Nethercote-79/+43
Because all options now can take a value. This simplifies some code quite a bit.
2020-04-19Tweak `parse_opt_uint`.Nicholas Nethercote-1/+1
Don't set `slot` on failure, like all the other `parse_*` functions.
2020-04-19Fix the `-Zsanitizer_memory_track_origins` error message.Nicholas Nethercote-13/+7
Currently, if you give a bogus value like `-Zsanitizer-memory-track-origins=99` you get this incorrect error: ``` error: debugging option `sanitizer-memory-track-origins` takes no value ``` This commit fixes it so it gives this instead: ``` error: incorrect value `99` for debugging option `sanitizer-memory-track-origins` - 0, 1, or 2 was expected ``` The commit also makes `parse_sanitizer_memory_track_origins` more readable.
2020-04-19Clean up the list of parser descriptions.Nicholas Nethercote-7/+6
Put identical ones next to each other, and avoid duplicated strings.
2020-04-19Allow all boolean options to take values.Nicholas Nethercote-28/+22
They now all accept yes/no/y/n/on/off values. (Previously only some of them did.) This commit also makes `parse_bool` and `parse_opt_bool` more concise and readable, and adds some helpful comments to some functions.
2020-04-19Make some option descriptions fit the usual pattern.Nicholas Nethercote-6/+6
- No trailing '.' chars. - Use a lower-case letter at the start.
2020-04-19weak-into-raw: Add {Arc,Rc}::as_ptrMichal 'vorner' Vaner-2/+50
For consistency with Weak
2020-04-19Auto merge of #69793 - estebank:predicate-obligations-4, r=nikomatsakisbors-313/+287
Maintain chain of derived obligations When evaluating the derived obligations from super traits, maintain a reference to the original obligation in order to give more actionable context in the output. Continuation (and built on) #69745, subset of #69709. r? @eddyb
2020-04-19Do not show DefId in diagnosticsYuki Okushi-8/+26
2020-04-18Add label to item source of bound obligationEsteban Küber-61/+61
2020-04-18Do not emit note for projected derived obligationsEsteban Küber-48/+22
2020-04-18Remove `AssocTypeBound` and propagate bound `Span`sEsteban Küber-287/+106
2020-04-18Maintain chain of derived obligationsEsteban Küber-0/+181
When evaluating the derived obligations from super traits, maintain a reference to the original obligation in order to give more actionable context in the output.
2020-04-19Rollup merge of #71303 - tshepang:master, r=Mark-SimulacrumDylan DPC-15/+17
remove build warnings Code blocks that are not annotated are assumed to be Rust
2020-04-19Rollup merge of #71287 - JohnTitor:comment-vec, r=RalfJungDylan DPC-0/+3
Explain why we shouldn't add inline attr to into_vec Follow-up of #71204 r? @RalfJung
2020-04-19Rollup merge of #71283 - Amanieu:zprofile, r=davidtwcoDylan DPC-2/+16
Minor improvements to -Zprofile - `-Zprofile` is broken with codegen units because GCOV assumes that each source file corresponds to one object file. This PR makes `-Zprofile` automatically set codegen units to 1 and gives an error if `-Ccodegen-units=X` is specified on the command line (with `X != 1`). - The `profiler_builtins` crate is not suitable for `no_std` applications since it contains C code that depends on libc. In such cases a custom implementation of the LLVM gcov API (`llvm_gcov_init`, `llvm_gcda_*`) is needed. This PR adds `-Zno-profiler-runtime` flag which inhibits automatic injection of the `profiler_builtins` crate. cc @whitequark who implemented the original `-Zprofile` support
2020-04-19Rollup merge of #71276 - RalfJung:miri-unleash-box, r=ecstatic-morseDylan DPC-3/+30
miri-unleashed: test that we detect heap allocations This removes the second-to-last use of `IS_SUPPORTED_IN_MIRI = false`. r? @ecstatic-morse @oli-obk
2020-04-19Rollup merge of #71271 - JohnTitor:map-in-place, r=petrochenkovDylan DPC-7/+5
Move `MapInPlace` to rustc_data_structures Follow-up of #67786, it fits the purpose of rustc_data_structures. r? @petrochenkov