Open bjorn3 opened 5 years ago
Ignoring all emscripten ignored tests brings failed down to 525. Emscripten doesn't support threading, u/i128 and inline asm just like cg_clif.
Filled #388 for multithreading support.
And down to 510 thanks to 2ce5387b7c58a241d6b4929b9b8bd9078a7c73be.
I write a script to categorize the failing tests:
total unknown errors: 5
known error counts:
{
"can\'t find crate for `": 312,
"status=signal 4": 6,
"i128": 2,
"Unimplemented global asm mono item": 2,
"Inline assembly is not supported": 7,
"invalid ebb reference": 21,
"u128": 6,
"expected to have type i32, got i64": 4,
"panicked at \'assertion failed: !layout.is_unsized()\',": 7,
"status=signal 6": 268,
"not yet implemented: trans_ptr_binop(Le, <fat ptr>, <fat ptr>) not implemented": 1,
"the feature named `": 2,
" = WeakAny Default": 1,
"AtomicU128": 1,
"status=signal 11": 1,
"faerie doesn\'t support addends in data section relocations yet": 1,
"unsupported intrinsic": 25,
"not yet implemented: trans_ptr_binop(Lt, <fat ptr>, <fat ptr>) not implemented": 1,
"error: Non int ty types::F64 for variadic call": 2,
"Code shrinking during relaxation": 4,
"DuplicateDefinition(\"vtable.Some(Binder(": 2,
"not yet implemented: unsupported abi ": 6
}
1f00b7bf99e39315e823e2fe18ca8798564c24a0 fixed several tests.
Down from 312 to 169 in 22331adaa6da2f633fbdb06b7b6b4e557daf3331. This works around #412.
I reduced the ifmt.rs
test to:
macro_rules! t {
($a:expr, $b:expr) => { assert_eq!($a, $b) }
}
pub fn main() {
t!(format!("{:.*}", 4, "aaaaaaaaaaaaaaaaaa"), "aaaa"); // with -Zopt-level=2
// thread 'main' panicked at 'assertion failed: `(left == right)`
// left: `"aaaaaaaaaaaaaaaaaa"`,
// right: `"aaaa"`', rust/src/test/run-pass/ifmt.rs:6:5
t!(format!("{:.3e}", 1.2345e6f64), "1.234e6"); // with -Zopt-level=1
// thread 'main' panicked at 'assertion failed: noborrow', sysroot_src/src/libcore/num/bignum.rs:481:1
}
mir_overflow_off.rs
want assert_eq!(u8::shl(1, 9), 2_u8);
Most of the runtime panics are from unaligned slices, which is understandable as #348 is not yet fixed. I didn' investigate the cause of struct-return.rs
, union-c-interop.rs
and a few others panicking.
The "invalid ebb reference" errors will be fixed in rust-lang/rust#58902.
With rust-lang/rust#58902 fixed, error count is down to 112:
total unknown errors: 3
known error counts:
{
"can\'t find crate for `": 36,
"expected to have type i32, got i64": 3,
"i128": 1,
"Code shrinking during relaxation": 4,
"the feature named `": 1,
"not yet implemented: trans_ptr_binop(Le, <fat ptr>, <fat ptr>) not implemented": 1,
"status=signal 6": 37,
"unsupported intrinsic": 10,
"status=signal 11": 1,
"status=signal 4": 2,
"faerie doesn\'t support addends in data section relocations yet": 1,
"error: Non int ty types::F64 for variadic call": 2,
"not yet implemented: trans_ptr_binop(Lt, <fat ptr>, <fat ptr>) not implemented": 1,
"u128": 1,
"Unimplemented global asm mono item": 2
}
Smaller repro for ifmt.rs
:
#![feature(core_private_bignum)]
extern crate core;
use core::num::bignum::Big32x40 as Big;
fn main() {
let mut mant = Big::from_u64(0x278106_24dd2f1a);
let scale = Big::from_u64(0x200000_00000000);
mant.sub(&scale);
}
I think ifmt.rs
fails because intrinsic::add_with_overflow
doesn't actually check for overflow (#6)
Status: This is currently blocked on at least #6 and #348.
0df3b41630119f3b2dc3db27bf5ace942f210871: 108 -> 103 failed
Now 112:
total unknown errors: 5
known error counts:
{
"faerie doesn\'t support addends in data section relocations yet": 1,
"the feature named `": 1,
"status=signal 6": 47,
"unsupported intrinsic": 11,
"status=signal 11": 1,
"u128": 1,
"status=signal 4": 3,
"i128": 1,
"AtomicU128": 1,
"error: Non int ty types::F64 for variadic call": 2,
"Unimplemented global asm mono item": 2,
"can\'t find crate for `": 35,
}
I just wanted to pop on here and say that all the work you've done here in this repo with rustc and another codegen backend is truly incredible and you're super awesome and I hope you feel super amazing about what you've accomplished in such a short time, even if you stop right now it's totally amazing. That's all :)
Thanks you very much @m4b!
Now 111 (from 128) by d7274ac5fdf84452cdfd09727e106bac2bf50e36:
total unknown errors: 3
known error counts:
{
"the feature named `": 1,
"panicked at": 63,
"AtomicU128": 1,
"can\'t find crate for `": 35,
"Unimplemented global asm mono item": 2,
"status=signal 4": 3,
}
I accidentially made the assumption that the second component of a pair was stored directly after the first, which is not true when the size of the first component is smaller than the alignment of the second.
Now 85 as of bdf23c02018ec87f30a24dd98c8ad4a8bfbf15dd:
total unknown errors: 4
known error counts:
{
"Unimplemented global asm mono item": 2,
"status=signal 6": 28,
"can\'t find crate for `": 35,
"status=signal 4": 6,
"unsupported intrinsic": 3,
"error: Non int ty types::F64 for variadic call": 1,
"AtomicU128": 1,
"faerie doesn\'t support addends in data section relocations yet": 1,
"status=signal 11": 1,
}
With the recent merge of the ui
and run-pass
test suites the amount of failed tests increased. Some are just error differences between llvm and clif though:
test result: FAILED. 1 passed; 153 failed; 8256 ignored; 0 measured; 0 filtered out
Down to 91:
test result: FAILED. 8095 passed; 91 failed; 34 ignored; 0 measured; 0 filtered out
Now 46:
failures:
[ui] ui/array-slice-vec/check-static-slice.rs
[ui] ui/async-await/issues/issue-60674.rs
[ui] ui/bad/bad-intrinsic-monomorphization.rs
[ui] ui/consts/const-eval/dangling.rs
[ui] ui/consts/const-eval/issue-47971.rs
[ui] ui/consts/const-eval/pub_const_err.rs
[ui] ui/consts/const-str-ptr.rs
[ui] ui/consts/zst_no_llvm_alloc.rs
[ui] ui/derives/derive-marker-tricky.rs
[ui] ui/duplicate/dupe-symbols-7.rs
[ui] ui/dynamically-sized-types/dst-field-align.rs
[ui] ui/error-codes/E0511.rs
[ui] ui/issues/issue-11154.rs
[ui] ui/issues/issue-33537.rs
[ui] ui/issues/issue-39827.rs
[ui] ui/issues/issue-44056.rs
[ui] ui/issues/issue-45731.rs
[ui] ui/issues/issue-46519.rs
[ui] ui/issues/issue-51947.rs
[ui] ui/json-multiple.rs
[ui] ui/json-options.rs
[ui] ui/linkage-attr/linkage-detect-extern-generated-name-collision.rs
[ui] ui/linkage-attr/linkage-detect-local-generated-name-collision.rs
[ui] ui/linkage-attr/linkage-requires-raw-ptr.rs
[ui] ui/macro-quote-cond.rs
[ui] ui/macro-quote-test.rs
[ui] ui/macros/macro-comma-behavior-rpass.rs#core
[ui] ui/macros/macro-comma-behavior-rpass.rs#std
[ui] ui/mir/mir_misc_casts.rs
[ui] ui/mir/mir_overflow_off.rs
[ui] ui/mir/mir_raw_fat_ptr.rs
[ui] ui/nll/ty-outlives/issue-55756.rs
[ui] ui/non-integer-atomic.rs
[ui] ui/numbers-arithmetic/float_math.rs
[ui] ui/numbers-arithmetic/saturating-float-casts.rs
[ui] ui/proc_macro.rs
[ui] ui/rfc-1937-termination-trait/termination-trait-in-test.rs
[ui] ui/rfc-2166-underscore-imports/duplicate.rs
[ui] ui/rfc-2565-param-attrs/param-attrs-pretty.rs
[ui] ui/rust-2018/suggestions-not-always-applicable.rs
[ui] ui/sepcomp/sepcomp-lib-lto.rs
[ui] ui/sepcomp/sepcomp-lib.rs
[ui] ui/sse2.rs
[ui] ui/static_sized_requirement.rs
[ui] ui/structs-enums/align-struct.rs
[ui] ui/windows-subsystem-invalid.rs
test result: FAILED. 10 passed; 46 failed; 8136 ignored; 0 measured; 0 filtered out
(with some tests requiring unimplemented stuff or with a different compile error filtered away, but not all)
@bjorn3 Wow, that was a huge jump! Thank you for working on this project!
It seems like I had ignored too much tests. Currently trying again with less ignored tests.
With old filter it gives 74 failures, with new (and fixed) one from 2d5a0b8887701b8a30e81de00aeab2c2ca4e87dc it gives 57:
failures:
[ui] ui/array-slice-vec/check-static-slice.rs
[ui] ui/async-await/async-fn-size-moved-locals.rs
[ui] ui/async-await/issues/issue-60674.rs
[ui] ui/backtrace-debuginfo.rs
[ui] ui/backtrace.rs
[ui] ui/bad/bad-intrinsic-monomorphization.rs
[ui] ui/cdylib-deps-must-be-static.rs
[ui] ui/confuse-field-and-method/issue-2392.rs
[ui] ui/consts/const-eval/dangling.rs
[ui] ui/consts/const-eval/issue-47971.rs
[ui] ui/consts/const-eval/pub_const_err.rs
[ui] ui/consts/const-str-ptr.rs
[ui] ui/consts/zst_no_llvm_alloc.rs
[ui] ui/derives/derive-marker-tricky.rs
[ui] ui/dynamically-sized-types/dst-field-align.rs
[ui] ui/error-codes/E0511.rs
[ui] ui/generator/size-moved-locals.rs
[ui] ui/intrinsics/intrinsics-integer.rs
[ui] ui/intrinsics/intrinsics-math.rs
[ui] ui/issues/issue-11154.rs
[ui] ui/issues/issue-12133-3.rs
[ui] ui/issues/issue-28676.rs
[ui] ui/issues/issue-33537.rs
[ui] ui/issues/issue-39827.rs
[ui] ui/issues/issue-44056.rs
[ui] ui/issues/issue-51947.rs
[ui] ui/json-multiple.rs
[ui] ui/json-options.rs
[ui] ui/linkage-attr/linkage-detect-extern-generated-name-collision.rs
[ui] ui/linkage-attr/linkage-detect-local-generated-name-collision.rs
[ui] ui/linkage-attr/linkage-requires-raw-ptr.rs
[ui] ui/macro-quote-cond.rs
[ui] ui/macro-quote-test.rs
[ui] ui/mir/mir_misc_casts.rs
[ui] ui/mir/mir_overflow_off.rs
[ui] ui/mir/mir_raw_fat_ptr.rs
[ui] ui/nll/ty-outlives/issue-55756.rs
[ui] ui/non-integer-atomic.rs
[ui] ui/not-panic/not-panic-safe-2.rs
[ui] ui/not-panic/not-panic-safe-3.rs
[ui] ui/not-panic/not-panic-safe-4.rs
[ui] ui/not-panic/not-panic-safe-5.rs
[ui] ui/not-panic/not-panic-safe-6.rs
[ui] ui/numbers-arithmetic/float_math.rs
[ui] ui/numbers-arithmetic/i128.rs
[ui] ui/numbers-arithmetic/saturating-float-casts.rs
[ui] ui/proc_macro.rs
[ui] ui/rfc-2166-underscore-imports/duplicate.rs
[ui] ui/rfc-2565-param-attrs/param-attrs-pretty.rs
[ui] ui/rust-2018/suggestions-not-always-applicable.rs
[ui] ui/sepcomp/sepcomp-lib-lto.rs
[ui] ui/sepcomp/sepcomp-lib.rs
[ui] ui/span/borrowck-call-is-borrow-issue-12224.rs
[ui] ui/sse2.rs
[ui] ui/static_sized_requirement.rs
[ui] ui/structs-enums/align-struct.rs
[ui] ui/windows-subsystem-invalid.rs
test result: FAILED. 1 passed; 57 failed; 8130 ignored; 0 measured; 0 filtered out
@bjorn3 Thank you for all of the work you've put into this project! Do you have a patreon, paypal, or some other method available so that those who are interested can donate and thank you for your work?
Thanks @vultix for this nice comment! I really appreciate it. I just made a liberapay page: https://liberapay.com/bjorn3/.
Thanks a lot for all donations!
I just ran the test suite again. This time I ignored all tests that should give an error, as many give a different error or even panic with cg_clif. I also removed most of the tests that require unwinding support or other unimplemented things.
After looking through the results, I found several bugs. Several tests also get a stack overflow. (More stack usage due to less optimizations?) I haven't had the time to look at all failures yet.
failures:
[ui] ui/array-slice-vec/check-static-mut-slices.rs
[ui] ui/async-await/async-fn-size-moved-locals.rs
[ui] ui/async-await/async-fn-size-uninit-locals.rs
[ui] ui/cleanup-rvalue-temp-during-incomplete-alloc.rs
[ui] ui/consts/cast-discriminant-zst-enum.rs
[ui] ui/consts/const-str-ptr.rs
[ui] ui/consts/static-raw-pointer-interning2.rs
[ui] ui/drop/drop-trait-enum.rs
[ui] ui/generator/size-moved-locals.rs
[ui] ui/init-large-type.rs
[ui] ui/issues/issue-26655.rs
[ui] ui/issues/issue-28676.rs
[ui] ui/issues/issue-28950.rs
[ui] ui/issues/issue-29485.rs
[ui] ui/issues/issue-30018-panic.rs
[ui] ui/issues/issue-33992.rs
[ui] ui/issues/issue-39827.rs
[ui] ui/issues/issue-51947.rs
[ui] ui/issues/issue-8460.rs
[ui] ui/mir/mir_misc_casts.rs
[ui] ui/mir/mir_overflow_off.rs
[ui] ui/mir/mir_raw_fat_ptr.rs
[ui] ui/multi-panic.rs
[ui] ui/numbers-arithmetic/float_math.rs
[ui] ui/numbers-arithmetic/int-abs-overflow.rs
[ui] ui/numbers-arithmetic/saturating-float-casts.rs
[ui] ui/offset_from.rs
[ui] ui/sepcomp/sepcomp-unwind.rs
[ui] ui/sse2.rs
[ui] ui/structs-enums/unit-like-struct-drop-run.rs
[ui] ui/terminate-in-initializer.rs
[ui] ui/threads-sendsync/task-stderr.rs
test result: FAILED. 0 passed; 32 failed; 4331 ignored; 0 measured; 0 filtered out
The number of failed and ignored tests keeps going down! Thank you for your hard work!
When compiletest sees that it previously successfully tested a test, it will automatically mark that test as ignored. This means that there are 4331 passed tests and 32 failed tests. The huge decrease in passed tests and a part of the decrease in failed tests is because this time I ignored all compile-fail tests by removing them from the src/test/ui
dir.
Except for tests that either should error or require unimplemented features, the only failing ui
test is ui/enum-discriminant/issue-70509-partial_eq.rs
. That one will probably be fixed by https://github.com/bytecodealliance/wasmtime/pull/1939.
Thanks to #1068 82 tests which depended on the previously unimplemented struct argument passing for the SystemV abi are now passing.
Removed from the MVP milestone as enough tests pass to be usable in most cases.
cc #247
I got a branch to test it at https://github.com/bjorn3/rustc_codegen_cranelift/tree/wip_test_rustc_testsuite.
Excluding the following tests:
src/test/run-pass/{asm-*,abi-*,extern/,panic-runtime/,panics/,unsized-locals/,proc-macro/,threads-sendsync/,thinlto/,simd/}
The following
run-pass
tests fail:The most common runtime errors are: