Commit Graph

410 Commits

Author SHA1 Message Date
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
bjorn3
ac1c5d6954 Rustup to rustc 1.44.0-nightly (537ccdf3a 2020-04-02) 2020-04-03 11:54:18 +02:00
bjorn3
17f99b4a96 Take Place by value instead of by reference 2020-04-02 17:23:15 +02:00
bjorn3
13e3a3c8b0 Rustup to rustc 1.44.0-nightly (211365947 2020-03-30) 2020-03-31 13:20:19 +02:00
bjorn3
d2964f6a71 Rustup to rustc 1.44.0-nightly (75208942f 2020-03-27) 2020-03-28 14:20:24 +01:00
bjorn3
f6d12440aa Update Cranelift 2020-03-28 14:01:48 +01:00
bjorn3
f288959c00 Limit publicness to crate where possible and remove unused imports 2020-03-27 12:14:45 +01:00
bjorn3
6b30d508f7 Fix some FIXME's and add some new FIXME's 2020-03-21 16:52:02 +01:00
bjorn3
992fae08c4 Simplify handling of unimplemented stuff 2020-03-17 16:26:56 +01:00
bjorn3
dcc86d306c Emulate <Box<F> as FnOnce>::call_once without alloca
Fixes #884

cc #15
2020-03-10 20:48:58 +01:00
bjorn3
5d2a1daf83 Remove unused inline asm whitelist 2020-03-07 11:10:33 +01:00
bjorn3
9ab2af56aa Rustup to rustc 1.43.0-nightly (4ad624882 2020-03-03) 2020-03-04 15:04:28 +01:00
bjorn3
cc30c20293 Silence some warnings 2020-02-22 15:18:03 +01:00
bjorn3
c1bf153049 Rustup to rustc 1.43.0-nightly (8aa9d2014 2020-02-21) 2020-02-22 14:20:37 +01:00
bjorn3
6156f48ffe Update Cranelift and use the new ineg instruction 2020-02-15 11:59:45 +01:00
bjorn3
430f738392 Update Cranelift for basic blocks 2020-02-14 18:23:29 +01:00
bjorn3
b5b2ffab6a Rustup to rustc 1.43.0-nightly (5d04ce67f 2020-02-13) 2020-02-14 18:20:34 +01:00
bjorn3
33e73091f8 Don't mark unwind ebbs as cold
This fixes the code_layout optimization, as it would previously try to
move non-existing ebbs.

Fixes #877
2020-02-01 16:47:35 +01:00
bjorn3
74c7a7b7c5 Replace unimplemented! with unreachable! when it will never be supported 2020-01-25 16:24:48 +01:00
bjorn3
85ce626865 Improve PlaceElem::Subslice handling 2020-01-22 20:10:00 +01:00
bjorn3
217beab62a Reduce the amount of calls to layout_of 2020-01-15 13:18:54 +01:00
bjorn3
b44d6311ca Rustup to rustc 1.42.0-nightly (3ebcfa145 2020-01-12) 2020-01-14 12:29:04 +01:00
bjorn3
c74b306037 Move all cold code to the end of the function
Fixes #836

Benchmark #1: simple-raytracer/raytracer_cg_clif
  Time (mean ± σ):      9.250 s ±  0.056 s    [User: 9.213 s, System: 0.015 s]
  Range (min … max):    9.151 s …  9.348 s    20 runs

Benchmark #2: simple-raytracer/raytracer_cg_clif_cold_separated
  Time (mean ± σ):      9.179 s ±  0.101 s    [User: 9.141 s, System: 0.016 s]
  Range (min … max):    9.070 s …  9.473 s    20 runs

Summary
  'simple-raytracer/raytracer_cg_clif_cold_separated' ran
    1.01 ± 0.01 times faster than 'simple-raytracer/raytracer_cg_clif'
2020-01-11 17:57:18 +01:00
bjorn3
38797f8bad Implement #[track_caller]
Fixes #848
2020-01-11 17:10:42 +01:00
bjorn3
2a082209a6 Fix PlaceElem::Subslice length computation 2020-01-11 14:28:18 +01:00
bjorn3
70c9b3b35b Better self profiling integration 2020-01-10 14:16:27 +01:00
bjorn3
5424d7d55f Prepare for basic blocks 2020-01-10 12:14:28 +01:00
bjorn3
33ad67c124 Rustup to rustc 1.42.0-nightly (caa231d99 2020-01-08) 2020-01-09 17:43:10 +01:00
bjorn3
1bb848d4ac Re-use cranelift_codegen::ir::Function for every function
Fixes #844
2020-01-04 17:58:38 +01:00
bjorn3
c5a7fca527 Use DUMMY_SP in less places
Fixes #845
2020-01-04 17:49:00 +01:00
bjorn3
ca92695a2c Use IndexVec for ebb_map
cc #745
2020-01-04 13:23:42 +01:00
bjorn3
4c7abd504c Revert some changes 2019-12-31 15:59:49 +01:00
bjorn3
b0814a3fd8 Check for cross-ebb temporal overlap between loads and stores 2019-12-31 15:56:28 +01:00
bjorn3
8b82f4f989 [WIP] Add stack2reg optimization pass 2019-12-31 15:56:28 +01:00
bjorn3
958c58545f Only codegen a trap for functions with uninhabited arguments
Fixes #847
2019-12-28 11:10:21 +01:00
bjorn3
399cada762 Directly depend on cranelift_{codegen,frontend}
Fixes #838
2019-12-24 12:43:20 +01:00
bjorn3
2485994803 Rustup to rustc 1.42.0-nightly (01a46509a 2019-12-20) 2019-12-21 11:22:12 +01:00
bjorn3
967709f31a [OPT] Use load and store offsets instead of iadd_imm 2019-12-20 16:02:47 +01:00