Commit Graph

447 Commits

Author SHA1 Message Date
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