Matthias Krüger
28188d17ba
Rollup merge of #107100 - compiler-errors:issue-107087, r=lcnr
...
Use proper `InferCtxt` when probing for associated types in astconv
Fixes #107087
2023-01-28 05:20:16 +01:00
Matthias Krüger
7b78b6a78d
Rollup merge of #107022 - scottmcm:ordering-option-eq, r=m-ou-se
...
Implement `SpecOptionPartialEq` for `cmp::Ordering`
Noticed as I continue to explore options for having code using `partial_cmp` optimize better.
Before:
```llvm
; Function Attrs: mustprogress nofree nosync nounwind willreturn uwtable
define noundef zeroext i1 `@ordering_eq(i8` noundef %0, i8 noundef %1) unnamed_addr #0 {
start:
%2 = icmp eq i8 %0, 2
br i1 %2, label %bb1.i, label %bb3.i
bb1.i: ; preds = %start
%3 = icmp eq i8 %1, 2
br label %"_ZN55_$LT$T$u20$as$u20$core..option..SpecOptionPartialEq$GT$2eq17hb7e7beacecde585fE.exit"
bb3.i: ; preds = %start
%.not.i = icmp ne i8 %1, 2
%4 = icmp eq i8 %0, %1
%spec.select.i = and i1 %.not.i, %4
br label %"_ZN55_$LT$T$u20$as$u20$core..option..SpecOptionPartialEq$GT$2eq17hb7e7beacecde585fE.exit"
"_ZN55_$LT$T$u20$as$u20$core..option..SpecOptionPartialEq$GT$2eq17hb7e7beacecde585fE.exit": ; preds = %bb1.i, %bb3.i
%.0.i = phi i1 [ %3, %bb1.i ], [ %spec.select.i, %bb3.i ]
ret i1 %.0.i
}
```
After:
```llvm
; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn uwtable
define noundef zeroext i1 `@ordering_eq(i8` noundef %0, i8 noundef %1) unnamed_addr #1 {
start:
%2 = icmp eq i8 %0, %1
ret i1 %2
}
```
(Which <https://alive2.llvm.org/ce/z/-rop5r > says LLVM *could* just do itself, but there's probably an issue already open for that problem from when this was originally looked at for `Option<NonZeroU8>` and friends.)
2023-01-28 05:20:15 +01:00
bors
252741673b
Auto merge of #107360 - bjorn3:fix_thin_archive_reading, r=wesleywiser
...
Fix thin archive reading
This includes a revert of https://github.com/rust-lang/rust/pull/105221 to restore fat archive reading with LlvmArchiveBuilder.
Should fix #107162 , #107334 and https://github.com/google/shaderc-rs/issues/133
2023-01-28 04:02:25 +00:00
Scott McMurray
868d099a72
Remove ControlFlow::{BREAK, CONTINUE}
...
Libs-API decided to remove these in #102697 .
Follow-up to #107023 , which removed them from `compiler/`, but a couple new ones showed up since that was merged.
2023-01-27 19:46:42 -08:00
Scott McMurray
3e9d1e40cb
Link to the LLVM issue from a comment on SpecOptionPartialEq
2023-01-27 19:09:52 -08:00
bors
6cd6bad51f
Auto merge of #101692 - cjgillot:generator-lazy-witness, r=oli-obk
...
Compute generator saved locals on MIR
Generators are currently type-checked by introducing a `witness` type variable, which is unified with a `GeneratorWitness(captured types)` whose purpose is to ensure that the auto traits correctly migrate from the captured types to the `witness` type. This requires computing the captured types on HIR during type-checking, only to re-do it on MIR later.
This PR proposes to drop the HIR-based computation, and only keep the MIR one. This is done in 3 steps.
1. During type-checking, the `witness` type variable is never unified. This allows to stall all the obligations that depend on it until the end of type-checking. Then, the stalled obligations are marked as successful, and saved into the typeck results for later verification.
2. At type-checking writeback, `witness` is replaced by `GeneratorWitnessMIR(def_id, substs)`. From this point on, all trait selection involving `GeneratorWitnessMIR` will fetch the MIR-computed locals, similar to what opaque types do. There is no lifetime to be preserved here: we consider all the lifetimes appearing in this witness type to be higher-ranked.
3. After borrowck, the stashed obligations are verified against the actually computed types, in the `check_generator_obligations` query. If any obligation was wrongly marked as fulfilled in step 1, it should be reported here.
There are still many issues:
- ~I am not too happy having to filter out some locals from the checked bounds, I think this is MIR building that introduces raw pointers polluting the analysis;~ solved by a check specific to static variables.
- the diagnostics for captured types don't show where they are used/dropped;
- I do not attempt to support chalk.
cc `@eholk` `@jyn514` for the drop-tracking work
r? `@oli-obk` as you warned me of potential unsoundness
2023-01-28 01:05:29 +00:00
Michael Howell
0959149323
rustdoc: remove inline javascript from copy-path button
2023-01-27 16:22:59 -07:00
Camille GILLOT
d3d626920a
Bless mir-opt tests.
2023-01-27 22:01:47 +00:00
Camille GILLOT
de110f9208
Pacify tidy.
2023-01-27 22:01:25 +00:00
Camille GILLOT
65c3c90f3e
Restrict amount of ignored locals.
2023-01-27 22:01:12 +00:00
bors
7d4df2d30e
Auto merge of #107386 - flip1995:clippyup, r=Manishearth
...
Update Clippy
r? `@Manishearth`
2023-01-27 21:20:39 +00:00
b-naber
92f2d27d1b
address review
2023-01-27 22:13:55 +01:00
Camille GILLOT
c51fc382bd
Bless ui-fulldeps.
2023-01-27 20:10:25 +00:00
Camille GILLOT
0e52a671d4
Bless tests.
2023-01-27 20:10:17 +00:00
Camille GILLOT
60e04d1e8c
Compute generator saved locals on MIR.
2023-01-27 20:10:06 +00:00
Philipp Krones
c71062a324
Update Cargo.lock
2023-01-27 21:09:23 +01:00
Philipp Krones
1dd773175a
Merge commit '1480cea393d0cee195e59949eabdfbcf1230f7f9' into clippyup
2023-01-27 21:09:08 +01:00
Michael Goulet
8a0b2156d5
Micro-optimization in consider_assumption
2023-01-27 20:06:12 +00:00
Michael Goulet
0654374750
Add some comments
2023-01-27 20:06:12 +00:00
Michael Goulet
ff2413db1b
No need to probe when computing goals
2023-01-27 20:04:59 +00:00
nils
5152e84024
Remove unused import
2023-01-27 20:58:54 +01:00
bors
1480cea393
Auto merge of #10242 - flip1995:rustup, r=flip1995
...
Rustup
r? `@ghost`
changelog: none
2023-01-27 19:31:37 +00:00
Boxy
29901e027c
yeet
2023-01-27 19:29:04 +00:00
Philipp Krones
6f9c70a201
Bump Clippy version -> 0.1.69
2023-01-27 20:27:00 +01:00
Philipp Krones
1f403e9ab9
Bump nightly version -> 2023-01-27
2023-01-27 20:26:48 +01:00
Philipp Krones
2bc2431fd1
Merge remote-tracking branch 'upstream/master' into rustup
2023-01-27 20:26:35 +01:00
Nilstrieb
454c473599
Remove BOOL_TY_FOR_UNIT_TESTING
...
It is not used anymore for unit testing.
2023-01-27 20:22:54 +01:00
Camille GILLOT
400cb9aa41
Separate witness type computation from the generator transform.
2023-01-27 19:00:26 +00:00
Camille GILLOT
e2387ad484
Remember where a type was kept in MIR.
2023-01-27 18:59:32 +00:00
Camille GILLOT
1974b6b68d
Introduce GeneratorWitnessMIR.
2023-01-27 18:58:44 +00:00
Camille GILLOT
03618d6afd
Always require Drop for generators.
2023-01-27 18:58:23 +00:00
Camille GILLOT
9259da51ed
Test the 3 generator handling versions for generator/async tests.
2023-01-27 18:58:13 +00:00
Camille GILLOT
a20078f044
Add drop_tracking_mir
option.
2023-01-27 18:57:34 +00:00
Camille GILLOT
cb873b2d93
Separate trait selection from ambiguity reporting.
2023-01-27 18:57:10 +00:00
Camille GILLOT
2870ce01b8
Impl HashStable/Encodable/Decodable for ObligationCause.
2023-01-27 18:56:32 +00:00
Camille GILLOT
caefec955f
Do not abort compilation when failing to normalize opaque types.
2023-01-27 18:55:58 +00:00
León Orell Valerian Liehr
80a1536c7a
recover more unbraced const args
2023-01-27 19:26:04 +01:00
Camille GILLOT
263da251af
Use successor location for dominator check.
...
The assignment is complete only after the statement.
This marks self-assignments `x = x + 1` as non-sSA.
2023-01-27 18:22:45 +00:00
Camille GILLOT
d29dc057ba
Do not merge locals that have their address taken.
2023-01-27 18:22:45 +00:00
Camille GILLOT
9096d31dcc
Extract SsaLocals abstraction.
2023-01-27 18:22:45 +00:00
Camille GILLOT
bec73b09fd
Pacify tidy.
2023-01-27 18:22:45 +00:00
Camille GILLOT
8f1dbe54ea
Discard raw pointers from SSA locals.
2023-01-27 18:22:45 +00:00
Camille GILLOT
d45815eb4a
Only consider a local to be SSA if assignment dominates all uses.
2023-01-27 18:22:45 +00:00
Camille GILLOT
38b55dc684
Add tests.
2023-01-27 18:22:45 +00:00
Camille GILLOT
6ed9f8f62e
Implement SSA CopyProp pass.
2023-01-27 18:22:45 +00:00
Camille GILLOT
c4fe96c323
Allow to remove unused definitions without renumbering locals.
2023-01-27 18:22:45 +00:00
Camille GILLOT
982726cdc4
Consider CopyForDeref
for DestProp.
2023-01-27 18:22:44 +00:00
Camille GILLOT
8f7e441a54
Add mir-opt test.
2023-01-27 18:22:44 +00:00
Camille GILLOT
8ba0cd6c9e
Make tests unit.
2023-01-27 18:22:44 +00:00
Michael Goulet
5bfd90efd1
Use now solver in evaluate_obligation
2023-01-27 17:53:07 +00:00