Rémy Rakic
c646b46b52
introduce PrettyPrintMirOptions for cosmetic MIR dump options
...
initially starting with `-Z mir-include-spans` because we want them in
the NLL mir dump pass
2024-08-30 07:07:28 +00:00
Ralf Jung
35709be02d
rename AddressOf -> RawBorrow inside the compiler
2024-08-18 19:46:53 +02:00
Mohammad Omidvar
9b80250abb
Move compiler_builtin check to the use case
2024-07-15 23:43:52 +00:00
Maybe Waffle
484152d562
Support tail calls in mir via TerminatorKind::TailCall
2024-07-07 17:11:04 +02:00
bjorn3
9ec6a02ab3
Merge commit '49cd5dd454d0115cfbe9e39102a8b3ba4616aa40' into sync_cg_clif-2024-06-30
2024-06-30 11:28:14 +00:00
Scott McMurray
e04e35133f
bug! more uses of these in runtime stuff
2024-06-19 10:44:01 -07:00
Ralf Jung
eb584a23bf
offset_of: allow (unstably) taking the offset of slice tail fields
2024-06-08 18:17:55 +02:00
许杰友 Jieyou Xu (Joe)
2d3b1e014b
Rollup merge of #124251 - scottmcm:unop-ptr-metadata, r=oli-obk
...
Add an intrinsic for `ptr::metadata`
The follow-up to #123840 , so we can remove `PtrComponents` and `PtrRepr` from libcore entirely (well, after a bootstrap update).
As discussed in <https://rust-lang.zulipchat.com/#narrow/stream/189540-t-compiler.2Fwg-mir-opt/topic/.60ptr_metadata.60.20in.20MIR/near/435637808 >, this introduces `UnOp::PtrMetadata` taking a raw pointer and returning the associated metadata value.
By no longer going through a `union`, this should also help future PRs better optimize pointer operations.
r? ``@oli-obk``
2024-05-29 03:25:07 +01:00
Scott McMurray
459ce3f6bb
Add an intrinsic for ptr::metadata
2024-05-28 09:28:51 -07:00
Mark Rousskov
4c002fce9d
Omit non-needs_drop drop_in_place in vtables
...
This replaces the drop_in_place reference with null in vtables. On
librustc_driver.so, this drops about ~17k dynamic relocations from the
output, since many vtables can now be placed in read-only memory, rather
than having a relocated pointer included.
This makes a tradeoff by adding a null check at vtable call sites.
That's hard to avoid without changing the vtable format (e.g., to use a
pc-relative relocation instead of an absolute address, and avoid the
dynamic relocation that way). But it seems likely that the check is
cheap at runtime.
2024-05-27 16:26:56 -04:00
Scott McMurray
95c0e5c6a8
Remove Rvalue::CheckedBinaryOp
2024-05-17 20:33:02 -07:00
bjorn3
75f8bdbca4
Merge commit '3270432f4b0583104c8b9b6f695bf97d6bbf3ac2' into sync_cg_clif-2024-05-13
2024-05-13 13:26:33 +00:00
Michael Goulet
d50c2b0a52
Make builtin_deref just return a Ty
2024-05-09 22:55:00 -04:00
bjorn3
3d682cfb66
Merge commit 'de5d6523738fd44a0521b6abf3e73ae1df210741' into sync_cg_clif-2024-04-23
2024-04-23 09:37:28 +00:00
Scott McMurray
5e1d16ca55
Also handle AggregateKind::RawPtr in cg_cranelift
2024-04-21 11:08:37 -07:00
bjorn3
2ab4334a96
Merge commit '89f54caacf90e99fc8ba0d60a28bdadea3cfdf1e' into sync_cg_clif-2024-04-11
2024-04-11 10:42:48 +00:00
Ben Kimock
b5b49289e1
Only traverse mono-reachable blocks in cg_clif
2024-04-07 16:46:21 -04:00
Ben Kimock
a7912cb421
Put checks that detect UB under their own flag below debug_assertions
2024-04-06 11:21:47 -04:00
joboet
989660c3e6
rename expose_addr to expose_provenance
2024-04-03 16:00:38 +02:00
Jacob Pratt
e9ef8e1efa
Rollup merge of #122935 - RalfJung:with-exposed-provenance, r=Amanieu
...
rename ptr::from_exposed_addr -> ptr::with_exposed_provenance
As discussed on [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/136281-t-opsem/topic/To.20expose.20or.20not.20to.20expose/near/427757066 ).
The old name, `from_exposed_addr`, makes little sense as it's not the address that is exposed, it's the provenance. (`ptr.expose_addr()` stays unchanged as we haven't found a better option yet. The intended interpretation is "expose the provenance and return the address".)
The new name nicely matches `ptr::without_provenance`.
2024-04-02 20:37:39 -04:00
bors
db2f9759f4
Auto merge of #122671 - Mark-Simulacrum:const-panic-msg, r=Nilstrieb
...
Codegen const panic messages as function calls
This skips emitting extra arguments at every callsite (of which there
can be many). For a librustc_driver build with overflow checks enabled,
this cuts 0.7MB from the resulting shared library (see [perf]).
A sample improvement from nightly:
```
leaq str.0(%rip), %rdi
leaq .Lalloc_d6aeb8e2aa19de39a7f0e861c998af13(%rip), %rdx
movl $25, %esi
callq *_ZN4core9panicking5panic17h17cabb89c5bcc999E@GOTPCREL(%rip)
```
to this PR:
```
leaq .Lalloc_d6aeb8e2aa19de39a7f0e861c998af13(%rip), %rdi
callq *_RNvNtNtCsduqIKoij8JB_4core9panicking11panic_const23panic_const_div_by_zero@GOTPCREL(%rip)
```
[perf]: https://perf.rust-lang.org/compare.html?start=a7e4de13c1785819f4d61da41f6704ed69d5f203&end=64fbb4f0b2d621ff46d559d1e9f5ad89a8d7789b&stat=instructions:u
2024-03-29 00:24:01 +00:00
bjorn3
987ed345af
Merge commit '09fae60a86b848a2fc0ad219ecc4e438dc1eef86' into sync_cg_clif-2024-03-28
2024-03-28 11:43:35 +00:00
Ralf Jung
987ef4c922
move assert_unsafe_preconditions to its own file
...
These macros and functions are not intrinsics, after all.
2024-03-23 18:44:17 +01:00
Ralf Jung
038e7c6c38
rename MIR int2ptr casts to match library name
2024-03-23 13:18:33 +01:00
Mark Rousskov
00f4daa276
Codegen const panic messages as function calls
...
This skips emitting extra arguments at every callsite (of which there
can be many). For a librustc_driver build with overflow checks enabled,
this cuts 0.7MB from the resulting binary.
2024-03-22 09:55:50 -04:00
Ben Kimock
5f4f2526b8
Handle calls to upstream monomorphizations in compiler_builtins
2024-03-16 15:22:05 -04:00
Ben Kimock
5a93a59fd5
Distinguish between library and lang UB in assert_unsafe_precondition
2024-03-08 18:53:58 -05:00
Gary Guo
b044aaa905
Change InlineAsm to allow multiple targets instead
2024-02-24 18:50:09 +00:00
Ben Kimock
8836ac5758
Add a new debug_assertions instrinsic (compiler)
...
And in clippy
2024-02-08 11:49:08 -05:00
Michael Goulet
f700ee4e70
Do not normalize closure signature when building FnOnce shim
2024-01-22 16:50:30 +00:00
Nicholas Nethercote
99472c7049
Remove Session methods that duplicate DiagCtxt methods.
...
Also add some `dcx` methods to types that wrap `TyCtxt`, for easier
access.
2023-12-24 08:05:28 +11:00
Nicholas Nethercote
3a1b8e643a
Rename EarlyDiagCtxt methods to match DiagCtxt.
...
- `early_error_no_abort` -> `early_err`
- `early_error` -> `early_fatal`
- `early_struct_error` -> `early_struct_fatal`
2023-12-23 13:23:28 +11:00
bjorn3
d5c38ded26
Merge commit '3a9bf729322fb5035518f99b9d76a742bf7c124e' into sync_cg_clif-2023-12-19
2023-12-19 12:46:39 +00:00
Nicholas Nethercote
f6aa418c9f
Rename many DiagCtxt and EarlyDiagCtxt locals.
2023-12-18 16:06:22 +11:00
Nicholas Nethercote
cce1701c4c
Rename EarlyErrorHandler as EarlyDiagCtxt.
2023-12-18 16:06:21 +11:00
bjorn3
4db95ce3cb
Merge commit 'def04540a4e2541b995195c752c751295606a388' into sync_cg_clif-2023-11-16
2023-11-16 21:15:07 +00:00
George Bateman
e936416a8d
Support enum variants in offset_of!
2023-10-31 23:25:54 +00:00
Oli Scherer
60956837cf
s/Generator/Coroutine/
2023-10-20 21:10:38 +00:00
bjorn3
169055f2ff
Merge commit '81dc066758ec150b43822d4a0c84aae20fe10f40' into sync_cg_clif-2023-10-09
2023-10-09 08:52:46 +00:00
Jubilee
6d1c3a40cb
Rollup merge of #116277 - RalfJung:post-mono, r=oli-obk
...
dont call mir.post_mono_checks in codegen
It seems like all tests are still passing when I remove this... let's see what CI says.
2023-10-06 16:37:46 -07:00
ouz-a
6f0c5ee2d4
change is_subtype to relate_types
2023-10-02 23:39:45 +03:00
ouz-a
cd7f471931
Add docs, remove code, change subtyper code
2023-10-02 23:39:44 +03:00
ouz-a
3148e6a993
subtyping_projections
2023-10-02 23:37:49 +03:00
Ralf Jung
acb7c21507
dont call mir.post_mono_checks in codegen
2023-09-30 07:38:08 +02:00
Oli Scherer
6ea2db7c2d
Strip OpaqueCast during RevealAll.
2023-09-28 16:13:38 +00:00
Ralf Jung
9ac8b363e3
don't point at const usage site for resolution-time errors
...
also share the code that emits the actual error
2023-09-14 22:34:05 +02:00
Ralf Jung
89ac57db4d
move required_consts check to general post-mono-check function
2023-09-14 22:30:42 +02:00
Ralf Jung
6e4779ab17
make the eval() functions on our const types return the resulting value
2023-09-13 07:29:34 +02:00
Ralf Jung
4c53783f3c
when terminating during unwinding, show the reason why
2023-08-24 13:28:26 +02:00
Ralf Jung
818ec8e23a
give some unwind-related terminators a more clear name
2023-08-20 15:52:38 +02:00