bjorn3
32202f20cd
Merge commit 'f2cdd4a78d89c009342197cf5844a21f8aa813df' into sync_cg_clif-2022-04-22
2022-04-22 21:11:38 +02:00
Jakob Degen
a923e9211a
Add new Deinit
statement kind
2022-04-11 08:55:03 -04:00
bjorn3
d1904e5855
Merge commit '370c397ec9169809e5ad270079712e0043514240' into sync_cg_clif-2022-03-20
2022-03-20 16:55:21 +01:00
bjorn3
b5cbb87e62
Merge commit '35d9c6bf256968e1b40e0d554607928bdf9cebea' into sync_cg_clif-2022-02-23
2022-02-23 11:49:34 +01:00
Nicholas Nethercote
06bc64df92
Overhaul Const
.
...
Specifically, rename the `Const` struct as `ConstS` and re-introduce `Const` as
this:
```
pub struct Const<'tcx>(&'tcx Interned<ConstS>);
```
This now matches `Ty` and `Predicate` more closely, including using
pointer-based `eq` and `hash`.
Notable changes:
- `mk_const` now takes a `ConstS`.
- `Const` was copy, despite being 48 bytes. Now `ConstS` is not, so need a
we need separate arena for it, because we can't use the `Dropless` one any
more.
- Many `&'tcx Const<'tcx>`/`&Const<'tcx>` to `Const<'tcx>` changes
- Many `ct.ty` to `ct.ty()` and `ct.val` to `ct.val()` changes.
- Lots of tedious sigil fiddling.
2022-02-15 16:19:59 +11:00
Nicholas Nethercote
6a20fa93b5
Overhaul TyS
and Ty
.
...
Specifically, change `Ty` from this:
```
pub type Ty<'tcx> = &'tcx TyS<'tcx>;
```
to this
```
pub struct Ty<'tcx>(Interned<'tcx, TyS<'tcx>>);
```
There are two benefits to this.
- It's now a first class type, so we can define methods on it. This
means we can move a lot of methods away from `TyS`, leaving `TyS` as a
barely-used type, which is appropriate given that it's not meant to
be used directly.
- The uniqueness requirement is now explicit, via the `Interned` type.
E.g. the pointer-based `Eq` and `Hash` comes from `Interned`, rather
than via `TyS`, which wasn't obvious at all.
Much of this commit is boring churn. The interesting changes are in
these files:
- compiler/rustc_middle/src/arena.rs
- compiler/rustc_middle/src/mir/visit.rs
- compiler/rustc_middle/src/ty/context.rs
- compiler/rustc_middle/src/ty/mod.rs
Specifically:
- Most mentions of `TyS` are removed. It's very much a dumb struct now;
`Ty` has all the smarts.
- `TyS` now has `crate` visibility instead of `pub`.
- `TyS::make_for_test` is removed in favour of the static `BOOL_TY`,
which just works better with the new structure.
- The `Eq`/`Ord`/`Hash` impls are removed from `TyS`. `Interned`s impls
of `Eq`/`Hash` now suffice. `Ord` is now partly on `Interned`
(pointer-based, for the `Equal` case) and partly on `TyS`
(contents-based, for the other cases).
- There are many tedious sigil adjustments, i.e. adding or removing `*`
or `&`. They seem to be unavoidable.
2022-02-15 16:03:24 +11:00
Tomasz Miąsko
7ec4de3ab8
Remove deprecated LLVM-style inline assembly
2022-01-12 18:51:31 +01:00
Matthias Krüger
1da0071338
Rollup merge of #90102 - nbdd0121:box3, r=jonas-schievink
...
Remove `NullOp::Box`
Follow up of #89030 and MCP rust-lang/compiler-team#460 .
~1 month later nothing seems to be broken, apart from a small regression that #89332 (1aac85bb716c09304b313d69d30d74fe7e8e1a8e) shows could be regained by remvoing the diverging path, so it shall be safe to continue and remove `NullOp::Box` completely.
r? `@jonas-schievink`
`@rustbot` label T-compiler
2022-01-03 14:44:15 +01:00
bjorn3
799e067912
Merge commit '97e504549371d7640cf011d266e3c17394fdddac' into sync_cg_clif-2021-12-20
2021-12-20 18:56:35 +01:00
cynecx
dd3cb0cd75
cg_cranelift: check may_unwind flag instead of cleanup
2021-12-03 23:51:49 +01:00
cynecx
5728c165fa
LLVM codgen support for unwinding inline assembly
2021-12-03 23:51:49 +01:00
Gary Guo
0ef11587b0
Remove NullOp::Box
2021-10-20 19:42:35 +01:00
Gary Guo
1b34e2d678
Introduce Rvalue::ShallowInitBox
2021-09-25 01:08:41 +01:00
Eduard-Mihai Burtescu
e857fabac1
Querify fn_abi_of_{fn_ptr,instance}
.
2021-09-18 04:41:33 +03:00
Eduard-Mihai Burtescu
849b4c4483
ty::layout: replicate layout_of
setup for fn_abi_of_{fn_ptr,instance}
.
2021-09-18 04:41:29 +03:00
Gary Guo
4ac4980b33
Introduce NullOp::AlignOf
2021-09-13 00:08:35 +01:00
Camille GILLOT
9ad50a41fe
Move the dataflow framework to its own crate.
2021-09-07 19:57:07 +02:00
bjorn3
d220159810
Merge commit '05677b6bd6c938ed760835d9b1f6514992654ae3' into sync_cg_clif-2021-08-06
2021-08-06 16:26:56 +02:00
bjorn3
fb92375755
Merge commit '3a31c6d8272c14388a34622193baf553636fe470' into sync_cg_clif-2021-07-07
2021-07-07 11:14:20 +02:00
bjorn3
d6b03451e6
Merge commit '40dd3e2b7089b5e96714e064b731f6dbf17c61a9' into sync_cg_clif-2021-05-27
2021-05-27 13:08:14 +02:00
Erin Power
ee570b1302
Sync rustc_codegen_cranelift 'ddd4ce25535cf71203ba3700896131ce55fde795'
2021-04-30 14:49:58 +02:00
bjorn3
07968a001d
Merge commit '0969bc6dde001e01e7e1f58c8ccd7750f8a49ae1' into sync_cg_clif-2021-03-29
2021-03-29 10:45:09 +02:00
kadmin
d30c497de6
Build StKind::CopyOverlapping
...
This replaces where it was previously being constructed in intrinsics, with direct construction
of the Statement.
2021-03-09 16:54:14 +00:00
kadmin
83e6251f21
Update cranelift
2021-03-09 16:54:14 +00:00
bors
7f020206e8
Auto merge of #82727 - oli-obk:shrinkmem, r=pnkfelix
...
Test the effect of shrinking the size of Rvalue by 16 bytes
r? `@ghost`
2021-03-08 08:39:24 +00:00
bjorn3
27886cd6b6
Merge commit '9a0c32934ebe376128230aa8da3275697b2053e7' into sync_cg_clif-2021-03-05
2021-03-05 19:12:59 +01:00
Oli Scherer
b63df38a98
Shrink the size of Rvalue by 16 bytes
2021-03-05 09:33:01 +00:00
bjorn3
a75f9bc3be
Merge commit 'd556c56f792756dd7cfec742b9f2e07612dc10f4' into sync_cg_clif-2021-02-01
2021-02-01 10:11:46 +01:00
bjorn3
77f74ed070
Merge commit 'dbee13661efa269cb4cd57bb4c6b99a19732b484' into sync_cg_clif-2020-12-27
2020-12-27 10:30:38 +01:00
bjorn3
d404840788
Merge commit '5988bbd24aa87732bfa1d111ba00bcdaa22c481a' into sync_cg_clif-2020-11-27
2020-11-27 20:48:53 +01:00
Bastian Kauschke
56e63805be
update cg_clif
2020-11-16 22:42:09 +01:00
oli
5fa1c8f91a
u128
truncation and sign extension are not just interpreter related
2020-11-04 13:41:58 +00:00
oli
7e8b15e050
Fix cranelift build
2020-11-04 10:10:44 +00:00
bjorn3
285c7c66dc
Merge commit '03f01bbe901d60b71cf2c5ec766aef5e532ab79d' into update_cg_clif-2020-11-01
2020-11-03 11:00:04 +01:00
bjorn3
a233646dfc
Rustup to rustc 1.49.0-nightly ( e160e5cb8
2020-10-14)
2020-10-15 10:34:13 +02:00
bjorn3
0a5968dfd2
Use the new cranelift-module interface
...
This updates Cranelift to include bytecodealliance/wasmtime#2249
2020-10-08 19:00:21 +02:00
bjorn3
c0507a63fb
Invoke panic handler instead of trap for assert_* intrinsics
2020-09-29 13:22:01 +02:00
bjorn3
c8699076f9
Document almost all modules
...
Fixes #1082
2020-09-23 15:13:49 +02:00
bjorn3
bac3464757
Fix debug build
2020-09-21 14:56:19 +02:00
bjorn3
552991e17e
Replace FxHashMap with IndexVec for local_map
...
Fixes #745
2020-09-16 18:45:19 +02:00
bjorn3
51f816f2a7
Rustfmt
2020-09-16 16:58:58 +02:00
bjorn3
2d250ffa97
Fix miscompilation in previous commit
2020-09-14 11:44:53 +02:00
bjorn3
bb59d616aa
Use don't unroll loop in Rvalue::Repeat
...
Fixes #1081
2020-09-14 11:32:27 +02:00
bjorn3
9c6921b4b6
Fix typo
2020-09-14 10:32:37 +02:00
bjorn3
217b3818b7
Rustup to rustc 1.48.0-nightly ( c59199efc
2020-09-04)
2020-09-05 10:38:49 +02:00
bjorn3
3b0f3a0a1e
Optimize SwitchInt for bools
2020-08-30 13:15:53 +02:00
CohenArthur
4e685a512e
fmt: Run cargo fmt since it is available
2020-08-28 12:10:48 +02:00
bjorn3
5dec38e94c
Avoid temporary stack slot in drop codegen
...
cc #322
2020-08-25 18:32:16 +02:00
bjorn3
18348b1aec
Rustup to rustc 1.47.0-nightly ( 663d2f5cd
2020-08-22)
2020-08-23 11:50:51 +02:00
CohenArthur
7b994595da
trans_fn: Cleanup code
2020-08-22 19:05:22 +02:00
CohenArthur
05797b2476
trans_fn: Use replace() instead of new() + swap()
2020-08-22 19:03:35 +02:00
CohenArthur
d65e500394
FunctionCx: Swap context.func and empty function correctly
2020-08-22 18:53:34 +02:00
CohenArthur
0d1f8c802e
FunctionCx: Refactor fx.cx.tcx
into fx.tcx
2020-08-22 16:47:31 +02:00
CohenArthur
5cf4577352
FunctionCx: Add tcx field for easier access
2020-08-22 16:45:50 +02:00
CohenArthur
ea29b1818f
FunctionCx: Fix FunctionCx initialization in trans_fn()
2020-08-22 16:40:58 +02:00
CohenArthur
7b534d653d
FunctionCx: Rename codegen_cx -> cx
2020-08-22 16:17:58 +02:00
CohenArthur
429e75fe40
FunctionCx: WIP: Remove more common fields from CodegenCx
2020-08-22 15:49:16 +02:00
CohenArthur
1a6365f95f
FunctionCx: WIP: Fix overzealous sed usage
2020-08-22 15:25:36 +02:00
CohenArthur
ad4a7a1f0c
FunctionCx: WIP: Fix syntax error on sed codegen_cx -> .codegen_cx
2020-08-22 15:21:38 +02:00
CohenArthur
d199b83b55
FunctionCx: WIP: Replace .constants with codegen_cx.constants
2020-08-22 15:19:48 +02:00
CohenArthur
cb69c7019c
FunctionCx: Replace .module with .codegen_cx.module
2020-08-22 15:19:09 +02:00
CohenArthur
297d65c247
FunctionCx: WIP: Replace .tcx with .codegen_cx.tcx
2020-08-22 15:18:39 +02:00
bjorn3
e64f523b27
Evaluate all mir.required_consts and report any errors
...
Fixes #981
2020-08-20 16:51:36 +02:00
bjorn3
c1a68b1386
Emulate the cpuid arch intrinsic
2020-08-15 19:08:19 +02:00
bjorn3
1b8df386aa
Fix -Zpolymorphize
2020-07-23 18:08:15 +02:00
bjorn3
3f2589acd9
Fix multiple inline asm blocks in the same function
2020-07-23 12:37:03 +02:00
bjorn3
34823a7e4c
Rustup to rustc 1.46.0-nightly ( 5c9e5df3a
2020-07-16)
2020-07-17 19:15:33 +02:00
bjorn3
3e67eb1b44
Update Cranelift
...
Fixes #757 (through bytecodealliance/wasmtime#1939 )
2020-07-14 21:14:14 +02:00
bjorn3
a0580610b2
Use From::from
instead of as
where possible
2020-07-14 16:38:50 +02:00
bjorn3
4ec2831ebc
No silent truncating of SwitchInt values
2020-07-13 19:45:46 +02:00
bjorn3
726e329f46
Add basic inline asm support for x86_64
2020-07-10 21:34:26 +02:00
bjorn3
21edec4ea5
Fix core::hint::black_box support
2020-07-03 16:39:36 +02:00
bjorn3
bf2ba15972
When casting enum to integer sign extend the discriminant if necessary
2020-06-30 18:59:58 +02:00
bjorn3
3227203fe6
Don't use a 1-to-1 mapping between mir local and cranelift_frontend variable
2020-06-27 14:29:28 +02:00
bjorn3
48d4bc2fb6
Rustup to rustc 1.46.0-nightly ( 7750c3d46
2020-06-26)
2020-06-27 11:29:39 +02:00
bjorn3
98c83d21f5
Remove leftover of removed hack
2020-06-24 11:54:11 +02:00
bjorn3
eb8fd197ab
Prelude cleanup
2020-06-20 18:44:49 +02:00
bjorn3
266ca933f4
Rustup to rustc 1.46.0-nightly ( 2d8bd9b74
2020-06-19)
2020-06-20 11:10:27 +02:00
bjorn3
3086e44733
Only call build_value_labels_ranges when necessary
2020-06-16 13:27:24 +02:00
bjorn3
daad966be7
Some changes necessary for Windows support
...
cc #977
2020-06-16 11:36:39 +02:00
bjorn3
eb5ce4e92a
Remove FunctionDebugContext
2020-06-13 17:03:34 +02:00
bjorn3
16b5dac463
Remove all non-tcx references from CodegenCx
2020-06-12 21:15:13 +02:00
bjorn3
b84c9764db
Rustup to rustc 1.46.0-nightly ( a37c32e2d
2020-06-11)
2020-06-12 18:41:50 +02:00
bjorn3
cef9255c0e
Rustup to rustc 1.46.0-nightly ( 449e8eaa2
2020-06-10)
2020-06-11 13:12:47 +02:00
bjorn3
648b634e21
Rustup to rustc 1.45.0-nightly ( 56daaf669
2020-06-03)
2020-06-04 19:57:12 +02:00
bjorn3
1e70c51f60
Merge pull request #1022 from osa1/clif_dump_in_release_mode
...
Dump clif with --emit llvm-ir in release mode
2020-05-29 11:12:02 +02:00
Ömer Sinan Ağacan
acbfa06ea2
Mark blocks that call cold funs as cold ( #1021 )
2020-05-29 11:06:29 +02:00
Ömer Sinan Ağacan
6dd0246199
Dump clif with --emit llvm-ir in release mode
...
Currently it's not possible to dump llvm-ir in release build. With this
patch we allow it with `--emit llvm-ir`. In debug build we dump clif
always as before.
Fixes #1020
2020-05-29 11:43:05 +03:00
bjorn3
bcd357a0ae
Rustup to rustc 1.45.0-nightly ( 46e85b432
2020-05-24)
2020-05-25 12:41:33 +02:00
bjorn3
4da6488d95
Always emit .eh_frame section
2020-05-01 19:21:29 +02:00
bjorn3
7031c96fb3
Call panic lang item on failed TerminatorKind::Assert
...
Fixes #164
2020-04-25 19:07:53 +02:00
bjorn3
6b8b4e54ba
Rustup to rustc 1.44.0-nightly ( 3360cc3a0
2020-04-24)
2020-04-25 11:42:46 +02:00
bjorn3
27a46ff765
Rustup to rustc 1.44.0-nightly ( 45d050cde
2020-04-21)
...
Remove the `<Box<F> as FnOnce>::call_once` hack now that rust-lang/rust#71170 is merged.
2020-04-22 17:54:25 +02:00
Serentty
080d17f4f5
Fix spelling error in comment ( #974 )
2020-04-19 10:55:07 +02:00
bjorn3
21aa9b29bc
Pre-allocate local_map
2020-04-13 19:53:49 +02:00
bjorn3
b6bbc0f751
Codegen goto return block as return terminator
2020-04-11 15:01:29 +02:00
bjorn3
ea1a99900e
Remove unchecked_cast_to
2020-04-11 15:01:15 +02:00
bjorn3
3ef6170142
Remove CPlace::NoPlace
2020-04-11 15:01:04 +02:00
bjorn3
016673b0c3
Fix rustc::internals lint warnings
2020-04-09 12:12:55 +02:00
bjorn3
291c75d10b
Enable the rust_2018_idioms and unused_lifetimes lints and fix all warnings
...
They are set to deny by default in the rust-lang/rust repo
2020-04-09 12:12:55 +02:00