Commit Graph

266 Commits

Author SHA1 Message Date
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
bjorn3
8d2db1b75d Monomorphize type of promoted 2019-12-18 20:41:07 +01:00
bjorn3
172522c2e7 [OPT] Push fx.monomorphize to the callers of fx.layout_of
This prevents some repeated monomorphizations
2019-12-17 16:58:34 +01:00
bjorn3
d502f8e652 [OPT] Avoid calling target_triple for every call to codegen 2019-12-17 16:34:48 +01:00
bjorn3
b86eb2e8ba Some optimizations
* Only format global _comments when debug_assertions are enabled
* Only call build_value_labels_ranges in base.rs when debug_assertions are enabled

Benchmark #1: CHANNEL='pre' ../cargo.sh build
  Time (mean ± σ):     17.657 s ±  1.050 s    [User: 31.871 s, System: 3.014 s]
  Range (min … max):   16.907 s … 20.394 s    10 runs

Benchmark #2: ../cargo.sh build
  Time (mean ± σ):     16.640 s ±  0.255 s    [User: 30.238 s, System: 2.965 s]
  Range (min … max):   16.413 s … 17.186 s    10 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet PC without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Summary
  '../cargo.sh build' ran
    1.06 ± 0.07 times faster than 'CHANNEL='pre' ../cargo.sh build'
2019-12-16 12:07:31 +01:00
bjorn3
8edbbc45f7 Implement local reading for locals on stack 2019-12-16 12:04:34 +01:00
bjorn3
21f0dfd014 Monomorphize locals 2019-12-16 12:04:34 +01:00
bjorn3
a962835685 [WIP] debuginfo: Add types for locals 2019-12-16 12:04:34 +01:00
bjorn3
c0aedfef96 [WIP] debuginfo for locals 2019-12-16 12:04:34 +01:00
bjorn3
e1613a69d4 Rustup to rustc 1.41.0-nightly (a605441e0 2019-12-15) 2019-12-16 11:33:57 +01:00
bjorn3
88277f983a Remove some workarounds for missing inst legalizations 2019-12-08 11:52:04 +01:00
bjorn3
c6086a8fd7 Rustup to rustc 1.41.0-nightly (6d77e45f0 2019-12-04) 2019-12-05 21:00:57 +01:00
bjorn3
cdab96d05c Rustup to rustc 1.41.0-nightly (53712f863 2019-11-21) 2019-11-22 15:56:49 +01:00
bjorn3
c0ec688daf Rustup to rustc 1.40.0-nightly (3fc30d884 2019-11-10) 2019-11-11 20:34:42 +01:00
bjorn3
5407b51aa7 Rustup to rustc 1.40.0-nightly (9e346646e 2019-11-08) 2019-11-09 11:14:18 +01:00
bjorn3
5873127ec2 Make debuginfo writing backend agnostic 2019-10-18 18:31:38 +02:00
bjorn3
75db7cc49d Remove logfile support from unimpl.rs
I haven't used it in months
2019-10-06 17:36:15 +02:00
bjorn3
6129921529 More 128bit support
* UnOp::Neg
* ctpop
* bitreverse

Also replaces `if let Some(64u128) = ...` with `if ... = Some(u64u128)`
to be able to compile cg_clif using cg_clif, as cranelift_frontend::Switch
doesn't support i128 yet.
2019-10-06 15:51:43 +02:00
bjorn3
b5d29a8c58 Rustup to rustc 1.40.0-nightly (787005079 2019-10-04) 2019-10-06 10:41:15 +02:00
bjorn3
58a9b648e8 Update cranelift, faerie and target-lexicon 2019-10-03 18:55:01 +02:00
bjorn3
44792f1089 Rustup to rustc 1.40.0-nightly (084beb83e 2019-09-27) 2019-09-28 14:06:12 +02:00
bjorn3
c34ada7cca Fix foreign type handling 2019-09-14 17:53:36 +02:00
bjorn3
6ea4cbdf1b Rustup to rustc 1.39.0-nightly (a6946a817 2019-09-13) 2019-09-14 11:21:18 +02:00
bjorn3
ce0be229d7 Use upstream cranelift 2019-09-08 19:18:17 +02:00
bjorn3
629f7ab4a3 Don't perform neg overflow checks when they are disabled 2019-09-07 11:00:49 +02:00
bjorn3
bfb49e7d19 Rustup to rustc 1.39.0-nightly (6e19f3f38 2019-09-06) 2019-09-07 10:51:00 +02:00
Atul Bhosale
f481a4b685
Format code using 'cargo fmt' 2019-08-31 22:58:09 +05:30
bjorn3
b9dc950a11 Rustup to rustc 1.39.0-nightly (9b91b9c10 2019-08-26) 2019-08-27 11:01:36 +02:00
bjorn3
2a20cc0b94 Use anonymous lifetimes where possible 2019-08-18 16:52:07 +02:00
bjorn3
1bee110d95 Let codegen_get_discriminant accept CValue instead of CPlace 2019-08-18 16:19:33 +02:00
bjorn3
43e68319fa Rustup to rustc 1.39.0-nightly (2111aed0a 2019-08-17) 2019-08-18 11:30:13 +02:00
bjorn3
b4e55cdedd Refactor num.rs 2019-08-14 15:03:52 +02:00
bjorn3
db071db95a Calculate sign in trans{,_checked}_int_binop instead of caller 2019-08-14 13:01:55 +02:00
bjorn3
32cb5b8c8e Move discriminant get and set to discriminant.rs 2019-08-14 12:01:41 +02:00
bjorn3
883894a07a Move trans_*_binop to num.rs 2019-08-14 11:52:39 +02:00
bjorn3
581b6ea5be Misc changes 2019-08-14 11:36:24 +02:00
bjorn3
f93cd924ec Implement float -> small int cast
Also workaround small signed int eq/ne binop clif bug
2019-08-12 17:25:16 +02:00
bjorn3
6414f03644 Don't omit overflow checks for *_with_overflow intrinsics when compiling without debug assertions 2019-08-09 12:35:51 +02:00
bjorn3
bd7c119e4b Rustup to rustc 1.38.0-nightly (6a91782b7 2019-08-06) 2019-08-07 12:35:49 +02:00
bjorn3
b806070a88 Fix simd_cast 2019-07-31 09:46:05 +02:00
bjorn3
c7fa94bf00 Fix checked binops when overflow checks are disabled 2019-07-27 16:12:46 +02:00
bjorn3
718a5a2e3f Display span in Assert panic message 2019-07-26 11:32:04 +02:00
bjorn3
5180becc7c Fix 128bit CValue::const_val 2019-07-26 11:30:39 +02:00
bjorn3
8693728327 Respect sess.overflow_checks() 2019-07-26 11:29:35 +02:00
bjorn3
641a210ff6 Implement most 128bit binops 2019-07-26 11:29:35 +02:00