Ralf Jung
3f0b6a0d1c
consistently use MPlaceTy for return places
2024-03-04 23:40:26 +01:00
Ralf Jung
134e2b2056
interpret: do no ICE on OOB shuffle/insert/extract indices
2024-02-23 19:43:59 +01:00
Oli Scherer
fc9d1a8133
Split a bool argument into two named functions
2024-02-15 10:25:18 +00:00
Michael Goulet
c567eddec2
Add CoroutineClosure to TyKind, AggregateKind, UpvarArgs
2024-02-06 02:22:58 +00:00
Michael Goulet
fcb42b42d6
Remove movability from TyKind::Coroutine
2023-12-28 16:35:01 +00:00
Ralf Jung
edabd477f8
interpret: make numeric_intrinsic accessible from Miri
2023-12-03 11:51:58 +01:00
Nilstrieb
21a870515b
Fix clippy::needless_borrow in the compiler
...
`x clippy compiler -Aclippy::all -Wclippy::needless_borrow --fix`.
Then I had to remove a few unnecessary parens and muts that were exposed
now.
2023-11-21 20:13:40 +01:00
Guillaume Gomez
73100d8e93
Rollup merge of #117317 - RalfJung:track-caller, r=oli-obk
...
share some track_caller logic between interpret and codegen
Also move the code that implements the track_caller intrinsics out of the core interpreter engine -- it's just a helper creating a const-allocation, doesn't need to be part of the interpreter core.
2023-10-30 17:33:16 +01:00
Ralf Jung
351d532a27
interpret: call caller_location logic the same way codegen does, and share some code
2023-10-28 15:40:03 +02:00
Camille GILLOT
38c86b0798
Evaluate computed values to constants.
2023-10-25 06:46:47 +00:00
Oli Scherer
60956837cf
s/Generator/Coroutine/
2023-10-20 21:10:38 +00:00
Ralf Jung
b131fc10ae
separate bounds-check from alignment check
2023-10-15 18:13:33 +02:00
Ralf Jung
b1ebf002c3
don't UB on dangling ptr deref, instead check inbounds on projections
2023-10-15 18:12:46 +02:00
Ralf Jung
6796c5765d
miri: make NaN generation non-deterministic
2023-10-08 20:35:46 +02:00
Ralf Jung
acb7c21507
dont call mir.post_mono_checks in codegen
2023-09-30 07:38:08 +02:00
Camille GILLOT
44ac8dcc71
Remove GeneratorWitness and rename GeneratorWitnessMIR.
2023-09-23 13:47:30 +00:00
bors
0fd7ce99b0
Auto merge of #116010 - RalfJung:more-typed-immediates, r=oli-obk
...
interpret: more consistently use ImmTy in operators and casts
The diff in src/tools/miri/src/shims/x86/sse2.rs should hopefully suffice to explain why this is nicer. :)
2023-09-21 14:02:55 +00:00
Ralf Jung
da08a3f40c
interpret: more consistently use ImmTy in operators and casts
2023-09-20 21:57:54 +02:00
Ralf Jung
ea22adbabd
adjust constValue::Slice to work for arbitrary slice types
2023-09-19 20:17:43 +02:00
Ralf Jung
5a0a1ff0cd
move ConstValue into mir
...
this way we have mir::ConstValue and ty::ValTree as reasonably parallel
2023-09-19 11:11:02 +02:00
Camille GILLOT
6984030f80
Use write_immediate.
2023-09-11 16:29:42 +00:00
Camille GILLOT
d278ce126c
Return ImmTy in discriminant_for_variant.
2023-09-11 16:29:41 +00:00
Ralf Jung
fa5f13775a
interpret: make MemPlace, Place, Operand types private to the interpreter
2023-09-04 17:53:38 +02:00
Ralf Jung
ac3bca24b7
interpret: have assert_* intrinsics call the panic machinery instead of a direct abort
2023-08-20 15:52:40 +02:00
Scott McMurray
502af03445
Add a new compare_bytes intrinsic instead of calling memcmp directly
2023-08-06 15:47:40 -07:00
Matthias Krüger
01fdb9d148
Rollup merge of #114363 - RalfJung:interpret-not-miri, r=jackh726
...
avoid 'miri' when refering to the shared interpreter
This is basically the rustc source code version of https://github.com/rust-lang/rustc-dev-guide/pull/1471 .
2023-08-03 08:12:39 +02:00
Ralf Jung
2984670cea
avoid 'miri' when refering to the shared interpreter
2023-08-02 16:52:03 +02:00
Ralf Jung
7d5886504c
rename deref_operand → deref_pointer and some Miri helper functions
2023-08-01 13:40:29 +02:00
Matthias Krüger
fa21a8c6f8
Rollup merge of #114075 - matthiaskrgr:fmt_args_rustc_3, r=wesleywiser
...
inline format!() args from rustc_codegen_llvm to the end (4)
r? `@WaffleLapkin`
2023-07-27 06:04:13 +02:00
Matthias Krüger
c64ef5e070
inline format!() args from rustc_codegen_llvm to the end (4)
...
r? @WaffleLapkin
2023-07-25 23:20:28 +02:00
Ralf Jung
77ff1b83cd
interpret: make read functions generic over operand type
2023-07-25 22:33:59 +02:00
Ralf Jung
00fb45dccd
interpret: make write functions generic over the place type
2023-07-25 22:33:58 +02:00
Ralf Jung
14a674c88c
interpret: read_discriminant: only return VariantIdx
2023-07-25 14:30:58 +02:00
Ralf Jung
a2bcafa500
interpret: refactor projection code to work on a common trait, and use that for visitors
2023-07-25 14:30:58 +02:00
David Tolnay
5bbf0a8306
Revert "Auto merge of #113166 - moulins:ref-niches-initial, r=oli-obk"
...
This reverts commit 557359f925 , reversing
changes made to 1e6c09a803 .
2023-07-21 22:35:57 -07:00
Moulins
39cfe70e4f
CTFE: move target_{i, u}size_{min, max) to rustc_abi::TargetDataLayout
2023-07-21 03:31:47 +02:00
Mahdi Dibaiee
e55583c4b8
refactor(rustc_middle): Substs -> GenericArg
2023-07-14 13:27:35 +01:00
Boxy
12138b8e5e
Move TyCtxt::mk_x to Ty::new_x where applicable
2023-07-05 20:27:07 +01:00
Nilstrieb
3019c1cb2a
Put LayoutError behind reference to shrink result
...
`LayoutError` is 24 bytes, which is bigger than the `Ok` types, so let's
shrink that.
2023-07-01 21:16:25 +02:00
Scott McMurray
3fd8501823
Remove unchecked_add/sub/mul/shl/shr from CTFE/cg_ssa/cg_clif
2023-06-19 01:47:03 -07:00
Thom Chiovoloni
9e5573a0d2
Use 128 bits for TypeId hash
...
- Switch TypeId to 128 bits
- Hack around the fact that tracing-subscriber dislikes how TypeId is hashed
- Remove lowering of type_id128 from rustc_codegen_llvm
- Remove unnecessary `type_id128` intrinsic (just change return type of `type_id`)
- Only hash the lower 64 bits of the TypeId
- Reword comment
2023-06-04 08:34:48 -07:00
Michael Goulet
5460f92a0f
Rollup merge of #112168 - scottmcm:lower-div-rem-unchecked-to-mir, r=oli-obk
...
Lower `unchecked_div`/`_rem` to MIR's `BinOp::Div`/`Rem`
As described in <https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/mir/enum.BinOp.html#variant.Div >, the ordinary `BinOp`s for these are already UB for division by zero ([or overflow](https://llvm.org/docs/LangRef.html#sdiv-instruction ), [demo](https://rust.godbolt.org/z/71e7P7Exh )), as MIR building is responsible for inserting code to panic for those cases regardless of whether the overflow checks are enabled.
So we can lower these in the same arm that lowers `wrapping_add` to MIR `BinOp::Add` and such, as all these cases turn into ordinary `Rvalue::BinaryOp`s.
2023-06-02 16:02:06 -07:00
Deadbeef
4f83717cf7
Use translatable diagnostics in rustc_const_eval
2023-06-01 14:45:18 +00:00
Scott McMurray
73f104b6d6
remove unchecked_div/_rem from ctfe
2023-06-01 00:05:55 -07:00
Scott McMurray
05a665f21a
Lower intrinsics::offset to mir::BinOp::Offset
...
They're semantically the same, so this means the backends don't need to handle the intrinsic and means fewer MIR basic blocks in pointer arithmetic code.
2023-04-25 19:23:45 -07:00
Ben Kimock
0445fbdd83
Store hashes in special types so they aren't accidentally encoded as numbers
2023-04-18 10:52:47 -04:00
Scott McMurray
64cce5fc7d
Add CastKind::Transmute to MIR
...
Updates `interpret`, `codegen_ssa`, and `codegen_cranelift` to consume the new cast instead of the intrinsic.
Includes `CastTransmute` for custom MIR building, to be able to test the extra UB.
2023-03-22 15:15:41 -07:00
Dylan DPC
6ce78a31d8
Rollup merge of #108669 - Nilstrieb:query-my-uninitness, r=compiler-errors
...
Allow checking whether a type allows being uninitialized
This is useful for clippy ([rust-lang/clippy#10407 ](https://github.com/rust-lang/rust-clippy/issues/10407 )) and for the future `MaybeUninit::assume_init` panics (#100423 ).
2023-03-04 15:24:39 +05:30
est31
c54f061228
Don't put integers into backticks during formatting
2023-03-03 08:39:37 +01:00
est31
ef658907a5
Match end user facing unmatched backticks in compiler/
2023-03-03 08:39:36 +01:00