Commit Graph

128 Commits

Author SHA1 Message Date
bjorn3
3f6a3b5ebe Implement lazy compilation in JIT mode
Lazy compilation has the potential to significantly improve the startup
time of a program. While functions have to be codegened when called, it
is expected that a significant amount of all code is only required when
an error occurs or only when the program is used in certain ways.

The basic approach is to first codegen a shim for each function. This
shim calls the `__cg_clif_jit` function of cg_clif with a pointer to the
`Instance` corresponding to the function for which it is a shim.
`__cg_clif_jit` function then codegens this function and uses the hot
code swapping support of SimpleJIT to redirect future calls to the
function to the real version. Finally it calls the newly codegened
function.
2020-12-25 12:08:21 +01:00
bjorn3
aef656aee8 Rustup to rustc 1.50.0-nightly (72da5a9d8 2020-11-26) 2020-11-27 18:01:01 +01:00
bjorn3
c3179bc44b Rustup to rustc 1.50.0-nightly (593fe977a 2020-11-20) 2020-11-21 19:49:51 +01:00
bjorn3
f4e8af268b Update Cranelift
Fixes bootstrapping of rustc using cg_clif

Fixes #1097
2020-11-01 09:50:33 +01:00
Ben Striegel
4206f9fc16
Prefer numeric associated constants in example
Per their documentation, the `max_value()` and `min_value()` associated functions have been superseded by the `MAX` and `MIN` associated constants since Rust 1.43 and are considered "soft deprecated", with all uses currently being replaced in the rustc repo.
2020-10-27 16:20:58 -04:00
bjorn3
e5b2b1ba81 Misc changes 2020-09-22 13:06:14 +02:00
bjorn3
2cd8ccbea1 Don't benchmark mod_bench anymore 2020-09-18 14:45:52 +02:00
bjorn3
bb59d616aa Use don't unroll loop in Rvalue::Repeat
Fixes #1081
2020-09-14 11:32:27 +02:00
bjorn3
ca9fc101c0 Fix weak linkage
This removes the last sysroot patch apart from the few patches that disable tests
2020-08-20 15:24:33 +02:00
bjorn3
ee2addd010 Don't test x86_64 simd on archs other than x86_64 2020-08-20 13:22:07 +02:00
bjorn3
c1a68b1386 Emulate the cpuid arch intrinsic 2020-08-15 19:08:19 +02:00
bjorn3
49b7fac443 Enable simd insert and extract tests
Working since rust-lang/stdarch#876

Fixes #666
2020-08-08 16:32:03 +02:00
bjorn3
edc0a3470b Implement simd_insert 2020-07-19 14:54:18 +02:00
bjorn3
e87651c3f2 Add test for SwitchInt on 128bit integers 2020-07-16 13:01:20 +02:00
bjorn3
190e36a5f8 Make everything in example.rs public 2020-07-11 11:02:23 +02:00
bjorn3
8cf38181ad Disable global_asm! on macOS for now 2020-07-09 18:56:17 +02:00
bjorn3
037d411bf4 Implement global_asm! using an external assembler
Fixes #1061
2020-07-09 17:02:09 +02:00
bjorn3
8d639cd778 Test signed 128bit discriminants 2020-07-03 16:44:26 +02:00
bjorn3
f3a91164a2 Rustup to rustc 1.46.0-nightly (f781babf8 2020-07-01) 2020-07-02 19:48:03 +02:00
bjorn3
48d4bc2fb6 Rustup to rustc 1.46.0-nightly (7750c3d46 2020-06-26) 2020-06-27 11:29:39 +02:00
bjorn3
5f54cc7658 Implement checked_mul
Fixes #6
2020-06-20 15:15:28 +02:00
bjorn3
ef4186a85b Use Cranelift legalization for icmp.i128
The previous translation was wrong for signed 128bit comparisions

This fixes several libcore tests
2020-06-20 13:23:31 +02:00
bjorn3
5c6bf836fe Implement #[link_section]
Fixes #1047
2020-06-20 12:01:24 +02:00
bjorn3
d4187e6aae Make mini_core_hello_world work on Windows once TLS is supported 2020-06-16 11:50:58 +02:00
bjorn3
a76748e54a Fix warnings in alloc_example.rs 2020-06-16 10:42:44 +02:00
bjorn3
648b634e21 Rustup to rustc 1.45.0-nightly (56daaf669 2020-06-03) 2020-06-04 19:57:12 +02:00
bjorn3
12c92a32f6 Rustup to rustc 1.45.0-nightly (fa51f810e 2020-04-29) 2020-04-30 11:28:48 +02:00
bjorn3
7031c96fb3 Call panic lang item on failed TerminatorKind::Assert
Fixes #164
2020-04-25 19:07:53 +02:00
bjorn3
eab4c9063e Sync fn_sig_for_fn_abi with upstream for generator resume args
Fixes #970
2020-04-18 15:45:42 +02:00
bjorn3
51d07790df Use the correct return type for puts 2020-04-17 19:33:57 +02:00
bjorn3
3c9ebdb194 Rustup to rustc 1.44.0-nightly (1edd389cc 2020-03-23) 2020-03-24 13:09:44 +01:00
bjorn3
d74c151b69 Fix it 2020-03-18 20:33:29 +01:00
bjorn3
d464169beb Rustup to rustc 1.44.0-nightly (7ceebd98c 2020-03-17) 2020-03-18 20:12:19 +01:00
bjorn3
9ab2af56aa Rustup to rustc 1.43.0-nightly (4ad624882 2020-03-03) 2020-03-04 15:04:28 +01:00
bjorn3
c8de552c01 Tls support 2020-02-26 14:41:05 +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
c6086a8fd7 Rustup to rustc 1.41.0-nightly (6d77e45f0 2019-12-04) 2019-12-05 21:00:57 +01:00
bjorn3
e9d3569e08 Run libcore tests 2019-11-24 15:44:39 +01:00
bjorn3
b0bcb23eb4 Fix signed cast to 128bit integer 2019-11-16 16:44:26 +01:00
bjorn3
5407b51aa7 Rustup to rustc 1.40.0-nightly (9e346646e 2019-11-08) 2019-11-09 11:14:18 +01:00
bjorn3
8536514308 Rustup to rustc 1.40.0-nightly (10a52c25c 2019-10-24) 2019-10-25 21:41:24 +02:00
bjorn3
f2c574aebf Add extern type pointer cast tests 2019-09-21 11:32:11 +02:00
bjorn3
554a1aa0ba Reenable debug assertions for libstd on macOS
m4b/faerie#91 has been merged
2019-09-14 12:49:23 +02:00
bjorn3
a2e905f22d Correctly align offset for dst field projections
Fixes #681
2019-09-02 20:09:37 +02:00
bjorn3
15b9834d7d Don't copy ByRef passed types to local stack slot when not necessary
Eg when the local is immutable **and** the type is freeze.

This makes the simple raytracer runtime benchmark 1% faster than cg_llvm
without optimizations. Before it was 2% slower.

cc #691
cc #684
2019-08-30 15:42:07 +02:00
bjorn3
e704eb5259 Sync discriminant getter and setter with upstream
Fixes #683
2019-08-26 11:03:06 +02:00
bjorn3
1f90b04cd6 Fix float -> u/i128 cast
The original test casts were optimized away by rustc,
so cg_clif never saw them.

cc #668
2019-08-21 14:35:48 +02:00
bjorn3
b2d6705fe2 Implement u/i128 <-> float casts
Fixes #668
2019-08-21 14:01:29 +02:00
bjorn3
3fcd54088c Implement saturating_{add,sub} intrinsics 2019-08-20 10:40:08 +02:00