Commit Graph

252 Commits

Author SHA1 Message Date
Ralf Jung
f39e015163 check for overflow when doing pointer arithmetic 2017-06-05 14:23:35 -07:00
Ralf Jung
70227c87bf fix arith_offset not taking the size of the type into account; test for offset 2017-06-05 14:23:35 -07:00
Ralf Jung
6197f4fac9 Permit int->ptr->int roundtrip 2017-06-05 14:23:35 -07:00
Ralf Jung
cfff91ba3e write_bytes intrinsic: if the write count is 0, the pointer does not have to be valid 2017-06-05 14:23:34 -07:00
Ralf Jung
716653fd76 add comments in the tests explaining what the ignore flags do 2017-06-05 14:23:34 -07:00
Ralf Jung
1b5f77e4c1 Implement Offset like the other binary operators, share code with the intrinsic
Also improve drop glue tests
2017-06-05 14:19:10 -07:00
Ralf Jung
31cf66d0e8 remove our array drop glue and use rustc's instead; implement the new Offset and SizeOf operators 2017-06-05 10:06:40 -07:00
David Renshaw
a59d482574 remove unneeded '-gnu' suffix from compiletest ignore directives 2017-05-31 14:21:49 -04:00
David Renshaw
7624bca09e ignore thread-local-no-dtor test on windows-gnu target 2017-05-31 10:47:26 -04:00
Ralf Jung
b8e0b79222 add a test for output string formatting 2017-05-30 14:02:20 -07:00
Ralf Jung
dad95474cb test thread-local key with no dtor 2017-05-30 10:41:38 -07:00
Ralf Jung
633a34d6d3 re-disable aux_test -- it passes here, but not on Travis 2017-05-30 10:41:38 -07:00
Ralf Jung
1241938f97 test suite now also passes on MIR-libstd
Also enable some tests that were disabled for no apparant reason.
(The comment in zst.rs was wrong, the test was disabled also for miri execution.)
Delete env_args test as the args can actually be queried with MIR-libstd (currently, they are always empty)
2017-05-30 10:41:38 -07:00
Ralf Jung
99433a1ffd improve fn pointer signature check to allow some casts that should be permitted
Also properly check the "non-capturing Fn to fn" case
2017-05-30 10:41:38 -07:00
Ralf Jung
720c5f874e implement __rust_maybe_catch_panic 2017-05-30 10:41:38 -07:00
David Renshaw
66495222ab closure_to_fn_coercion has been stabilized 2017-05-30 09:27:50 -04:00
David Renshaw
0641e932bc implement __rust_allocate_zeroed C ABI function 2017-05-21 15:48:31 -04:00
David Renshaw
ecf452ce3a don't match on floating-point literal 2017-05-10 16:38:29 -04:00
Oliver Schneider
6706d8fdec Add regression test for bad substs 2017-03-24 09:03:19 +01:00
Oliver Schneider
bbeb7216e0 Thinify the fat pointer on virtual function calls 2017-03-23 18:32:57 +01:00
Oliver Schneider
0927829e14 Add regression test for single field by val tuples 2017-03-23 16:13:01 +01:00
Scott Olson
a82924b3e2 Merge pull request #152 from oli-obk/intrinsics
Intrinsics and overflow
2017-03-14 13:35:51 -07:00
Scott Olson
6ee8595375 Merge pull request #147 from oli-obk/rustup
rustup to rustc 1.17.0-nightly (60a0edc6c 2017-02-26)
2017-03-14 09:49:40 -07:00
Oliver Schneider
bb33830c60 Implement more atomic intrinsics 2017-03-14 13:05:51 +01:00
Oliver Schneider
adddde7cba Implement more float intrinsics 2017-03-14 12:35:38 +01:00
Oliver Schneider
80be25e705 Fix warnings in unit test 2017-03-14 11:14:53 +01:00
Oliver Schneider
da6f136997 I say we take off and nuke the lifetimes from orbit 2017-03-14 10:49:22 +01:00
David Renshaw
4cae50cccb add write_bytes() test for a larger-than-u128 struct 2017-03-13 20:33:23 -04:00
David Renshaw
aa2f9988a4 add write-bytes test 2017-03-13 19:49:37 -04:00
Oliver Schneider
8878a4030a rustup to rustc 1.17.0-nightly (60a0edc6c 2017-02-26) 2017-02-28 12:35:00 +01:00
Oliver Schneider
de42764b52
drop zst fields of null pointer optimized structs and enums
fixes #25
2017-02-24 11:04:13 +01:00
Oliver Schneider
31c81ac322 Merge move_fn_closure run-passtest into closure-drop 2017-02-24 10:42:11 +01:00
Oliver Schneider
c4c9ff8d3f
remove memory leak from run-pass test 2017-02-24 10:41:15 +01:00
Oliver Schneider
25c3a4fb00
drop all temporary closure allocations 2017-02-24 10:41:15 +01:00
Oliver Schneider
4730cdf825
fix a bug in drop code of structs with unsized fields 2017-02-14 14:26:47 +01:00
Scott Olson
d8e5500c6d Add test for closure drop. 2017-02-10 15:05:29 -08:00
Scott Olson
e0d6359297 Add test for #133. 2017-02-10 08:00:28 -08:00
Scott Olson
5a2cdc2689 Implement the fast float math intrinsics. 2017-02-10 05:58:34 -08:00
Scott Olson
e1725a8101 Add test for assoc consts. 2017-02-10 05:39:30 -08:00
Oliver Schneider
d92085fd0e properly extract the inner type in a drop impl 2017-02-09 19:08:08 +01:00
Oliver Schneider
8c2832f419 add the full test from rust 2017-02-09 18:03:21 +01:00
Scott Olson
3b95bf93b1 Merge pull request #132 from oli-obk/master
we cannot panic, thus `panicking` always returns false
2017-02-09 15:37:23 +01:00
Scott Olson
14d7501ca4 Merge pull request #128 from oli-obk/align_thyself
fix size of dst in size_of_val intrinsic
2017-02-09 15:35:15 +01:00
Oliver Schneider
f6fbd060ad no mir for mutex::lock in windows-gnu 2017-02-09 15:21:37 +01:00
Oliver Schneider
0f183dc866 we cannot panic, thus panicking always returns false 2017-02-09 15:07:50 +01:00
Oliver Schneider
d23c3ae516 fix a failing test 2017-02-09 13:00:38 +01:00
Oliver Schneider
0d3cee2db3 fix size of dst in size_of_val intrinsic 2017-02-09 11:15:56 +01:00
Scott Olson
2048679eed Merge pull request #126 from oli-obk/1>-1
1 > -1
2017-02-09 09:57:22 +01:00
Oliver Schneider
6aed897c70
1 > -1 2017-02-09 09:43:45 +01:00
Oliver Schneider
1844381ad0 compute the offset of dst fields by checking the vtable 2017-02-09 08:38:01 +01:00
Oliver Schneider
4beb774caa don't mark the zst allocation as static 2017-02-08 17:24:20 +01:00
Oliver Schneider
e23fc79d25 silence some style warning 2017-02-08 15:38:48 +01:00
Oliver Schneider
3db6ec3f11 prevent more deallocations of statics 2017-02-08 15:32:49 +01:00
Oliver Schneider
aaba692eff add regression test for #120 2017-02-07 20:38:23 +01:00
Oliver Schneider
01ac19d358 fix static mut accidental dealloc or freeze 2017-02-07 19:20:16 +01:00
Oliver Schneider
3c560f5941 fix some leftover u128 errors 2017-02-07 17:52:32 +01:00
Oliver Schneider
18f4ca3c6b fix drop impls for clike enums 2017-02-07 17:41:30 +01:00
Oliver Schneider
45df853da7 cleanup buggy closure dispatch code 2017-02-07 14:22:20 +01:00
Oliver Schneider
0377990dc6
fix turning function items into closure trait objects 2017-02-07 11:04:46 +01:00
Oliver Schneider
a3d83e5c8f can't call assert_eq on packed struct fields since that takes references 2017-01-31 10:51:52 +01:00
Oliver Schneider
5e34740ab6 implement packed struct field access 2017-01-30 09:44:52 +01:00
Oliver Schneider
ce95ae5927 correctly implement pointers to enum variant constructors 2017-01-28 15:46:46 +01:00
Oliver Schneider
b6e79dbbf5 fix some ICEs 2017-01-28 15:28:24 +01:00
Oliver Schneider
e22cceaceb
allow using tuple variant names as function handles in presence of NonZero optimizations 2017-01-23 12:56:40 +01:00
Oliver Schneider
04eadedb28
allow using tuple variant names as function handles 2017-01-23 12:56:40 +01:00
Oliver Schneider
8084d60f54
add test for unions and remove needles forced alloc 2017-01-12 12:43:37 +01:00
Oliver Schneider
7c486416cb
allow the use of tuple struct constructors as functions 2017-01-12 08:52:22 +01:00
Oliver Schneider
32cd8efb97
re-enable auxiliary tests for the host only 2017-01-12 08:40:16 +01:00
Scott Olson
d6e35fe46f Add test for #95. 2016-12-21 17:26:52 -08:00
Scott Olson
9e244251a0 Enable an old test that works now! 2016-12-17 01:58:03 -08:00
Scott Olson
0cc4535a58 This test appears to work on 32-bit now. 2016-12-17 01:52:26 -08:00
Scott Olson
142d971c82 Add regression test for write_primval bug. 2016-12-17 01:34:19 -08:00
Scott Olson
0591683b73 Stop before trans so I can test non-x86_64 targets.
I had problems when it tried to link outputs for targets other than my
host.

This re-breaks tests with auxiliary builds. I'm not sure what to do
about those right now.
2016-12-16 23:47:43 -08:00
Scott Olson
6ec3d65068 Revert "Revert "rustup to rustc 1.15.0-dev (ace092f56 2016-12-13)"" 2016-12-16 17:10:16 -08:00
Scott Olson
0deabf9c00 Revert "rustup to rustc 1.15.0-dev (ace092f56 2016-12-13)" 2016-12-15 01:16:06 -08:00
Oliver Schneider
9ec97bac71
enable auxiliary builds 2016-12-14 17:06:36 +01:00
Oliver Schneider
51ff9fdaf6
deallocate all locals on function exit and transitively freeze constants through pointers 2016-11-18 10:05:55 +01:00
Oliver Schneider
fd68670c0a
merge closures and function and implement some closure vtable cases 2016-11-15 17:19:37 +01:00
Oliver Schneider
64155ffd10
implement fn item -> trait object conversion 2016-11-15 16:32:21 +01:00
Oliver Schneider
1c5c6cd078
allow zsts in the zero case of a nullable pointer optimized enum 2016-11-15 16:15:17 +01:00
Oliver Schneider
5ee75c0805
don't print in the binop tests 2016-11-15 15:24:22 +01:00
Oliver Schneider
4748587a77
fix creation of simd types 2016-11-15 15:23:19 +01:00
Oliver Schneider
e2091ff934
add more atomic intrinsics 2016-11-15 15:19:38 +01:00
Oliver Schneider
f77a0ab10b
fix writing int->ptr transmuted primvals to memory 2016-11-15 15:18:49 +01:00
Oliver 'ker' Schneider
d42a7d021d fix null optimizations for smaller than pointer enums
fixes #76
2016-11-11 13:10:47 +01:00
Oliver 'ker' Schneider
921f5af1fe ensure that integers cast to pointers will never point at a valid alloc, not even the zst alloc 2016-11-10 19:20:11 +01:00
Scott Olson
33b1676bda Merge pull request #75 from oli-obk/master
implement more drop stuff
2016-11-06 01:29:14 -08:00
Paul Lietar
86062ef930 Read discriminant as a signed integer if specified by layout.
This ensures it gets sign extended correctly.

Fixes #78
2016-11-05 15:41:19 +00:00
Oliver Schneider
07c752cc82
fix the block processing for the drop_in_place intrinsic 2016-11-04 17:55:06 +01:00
Oliver Schneider
893f16389e
run drop on array elements 2016-11-04 17:34:33 +01:00
Oliver Schneider
5ef7924aa9
call drop for all elements of an owned slice 2016-11-04 16:51:43 +01:00
Oliver Schneider
c4c8764f53
generate a drop method pointer in the vtable and process it 2016-11-04 16:38:04 +01:00
Oliver Schneider
0420c27c8e
fix drop ordering and forward fat pointer extras to fields
this doesn't yet use the fat pointer extras
2016-11-04 15:55:05 +01:00
Oliver Schneider
73d7f1d41b
implement drop for NonZero optimized enums 2016-11-04 09:34:54 +01:00
Oliver Schneider
ff95efc525
Revert "Fix tests broken by std::vec::SetLenOnDrop."
This reverts commit 366c793306.
2016-11-04 09:15:59 +01:00
Oliver Schneider
2a35b3e322
call user defined drop impls 2016-11-03 17:32:37 +01:00
Oliver Schneider
e406099348
sanity check that boxes of zsts don't deallocate the zst allocation 2016-11-03 16:01:14 +01:00
Scott Olson
c938553a10 Add test for 39bb1254d. 2016-10-18 21:45:11 -06:00
Scott Olson
5f65ee2713 Refactor in preparation for Value locals.
Turning locals into `Vec<Value>` will allow writing `PrimVal` results
directly into the locals array without creating `memory::Allocation`s
for every local.

This will entail passing around a generalized kind of `Lvalue` instead
of `Pointer`s for the destinations of operations. Replacing `Pointer`
with `Lvalue` is mostly done with this commit, but expanding `Lvalue`
will come later.

This commit turns every local from `Pointer` into `Value::ByRef(ptr)`.
Locals which are `Value::ByVal(prim_val)` will come in a later commit.
2016-10-14 03:31:45 -06:00
Oliver Schneider
c9914cd3ae
fix enum variants with multiple fields 2016-09-30 10:45:52 +02:00
Oliver Schneider
f1c5bf2281
fix intrinsics and implement more of them 2016-09-29 15:58:26 +02:00
Oliver Schneider
1c18f6ddfa
implement slice patterns 2016-09-28 18:22:09 +02:00
Oliver Schneider
5b89f3fb94
implement Arc<T> -> Arc<Trait> unsizing 2016-09-27 18:01:33 +02:00
Oliver Schneider
d6f1ba89ce
fix matching on chars
fixes #63
2016-09-27 11:10:25 +02:00
Oliver Schneider
e28f873756
actually error on failing miri-pass tests
+ remove a test that never succeeded
2016-09-26 17:49:53 +02:00
Oliver Schneider
b3190359df
refactor away get_fat_ptr 2016-09-23 15:48:23 +02:00
Oliver Schneider
2282289ad5
refactor away intermediate allocations, stage1 2016-09-23 10:27:14 +02:00
Oliver Schneider
38748fa615
refactor away IntegerPtr 2016-09-22 15:47:16 +02:00
Oliver Schneider
0f578f0d2e
fully implement size_of_val and add various tests that now succeed 2016-09-22 13:00:43 +02:00
Oliver Schneider
145cbf844c
enable A<Struct> -> A<Trait> downcasting 2016-09-21 18:00:04 +02:00
Oliver Schneider
21e924975d
only split the Fn* arguments in case of closures and function pointers 2016-09-21 15:57:13 +02:00
Oliver Schneider
16f6ae3933
fix calling Fn closures as FnOnce closures 2016-09-20 18:31:55 +02:00
Oliver Schneider
63cc7fc9e8
fix miri backtrace panic 2016-09-20 12:51:48 +02:00
Scott Olson
814efe3b05 option_eq test passes now since casts are implemented. 2016-09-19 02:16:51 -06:00
Oliver Schneider
562c64d86a
add some sanity tests 2016-09-15 16:32:30 +02:00
Scott Olson
366c793306 Fix tests broken by std::vec::SetLenOnDrop. 2016-09-13 20:14:07 -06:00
Oliver Schneider
5c47e3dbd8
only allow the modification of static mut or statics with interior mutability 2016-09-11 11:02:45 +02:00
Oliver Schneider
bcda724c43
closures don't work yet 2016-09-09 15:44:35 +02:00
Oliver Schneider
00c551c5f0
implement calling methods through trait objects 2016-09-09 12:51:14 +02:00
Oliver Schneider
51ce4a2584
use byteorder's write_f{32,64} instead of transmuting 2016-07-06 11:51:32 +02:00
Oliver Schneider
4b831569f6
implement floats by running the ops on the host architecture 2016-07-05 09:08:24 +02:00
Oliver Schneider
594f1d79da
optimize all ZST allocations into one single allocation 2016-07-01 13:09:17 +02:00
Oliver Schneider
2dbd30fa51
implement char handling 2016-06-21 09:35:20 +02:00
Oliver Schneider
ed4af21605
fix master 2016-06-20 12:33:54 +02:00
Oliver Schneider
a1082b9b1a
Merge remote-tracking branch 'origin/master' into oflo 2016-06-20 12:33:09 +02:00
Oliver Schneider
e90ee1674a
fix comparing of function pointers 2016-06-20 10:35:15 +02:00
Scott Olson
f9c1cfa889 Remove now-useless #[miri_run] attributes.
Except for `ints.rs`, which is already handled by a pending pull request.
2016-06-17 22:52:30 -06:00
Oliver Schneider
00eb198a82
implement fn -> unsafe fn pointer casts 2016-06-17 16:49:06 +02:00
Oliver Schneider
3ba4f6db04
remove code repetition and fix overflowing intrinsics 2016-06-17 15:16:41 +02:00
Oliver Schneider
a55ac1fea8
pass arguments to start 2016-06-15 12:55:04 +02:00
Oliver Schneider
1bd00e8cb4
run start and main language item if provided 2016-06-14 11:52:45 +02:00
Oliver Schneider
55fd060cd8
don't use #[miri_run] anymore, but execute the main function 2016-06-13 15:33:05 +02:00
Oliver Schneider
3aa585e421
Merge remote-tracking branch 'origin/master' into function_pointers2 2016-06-13 11:24:01 +02:00
Oliver Schneider
384623daa7
function pointers 2016-06-10 18:06:36 +02:00
Oliver Schneider
cc1ca73f57
jit interpretation of constants 2016-06-03 15:48:56 +02:00
Oliver Schneider
97bc1d4bee
add a const fn test 2016-06-02 17:36:05 +02:00
Oliver Schneider
6ac64f19af
also step through promoteds, constants and statics 2016-06-02 17:05:17 +02:00
Oliver Schneider
12c2e5fab2
4byte pointers 2016-06-01 11:10:43 +02:00
Scott Olson
f63206ed2f Handle discriminant_value intrinsic. 2016-05-09 23:41:57 -06:00
Scott Olson
2d32503409 Support C ABI memcmp function. 2016-05-09 21:53:20 -06:00
Scott Olson
78caee20c7 Add test for size_of_val::<str>. 2016-05-09 21:03:53 -06:00
Scott Olson
b9c37124be Handle size_of_val for slice types. 2016-05-09 21:01:12 -06:00
Scott Olson
382dc0ccb2 Update for my github username change. 2016-05-09 20:08:37 -06:00
Scott Olson
a6b9b165c3 Handle CEnum layouts with signed representations. 2016-05-08 19:49:07 -06:00
Scott Olson
d825ef1bf1 Move StructWrappedNullablePointer-using test to bugs dir. 2016-05-08 19:30:17 -06:00
Scott Olson
9e289fa0aa Fully handle RawNullablePointer layout. 2016-04-30 01:04:17 -06:00
Scott Olson
2db3597b56 Implement boolean binops. 2016-04-23 00:39:38 -06:00
Scott Olson
6f50289d43 Fix lvalue projections with fat pointer bases. 2016-04-23 00:26:10 -06:00
Scott Olson
4a863c2a6a Replace Repr with the new ty::layout in rustc.
Lvalues still need work (see lvalue_layout).
2016-04-23 00:03:59 -06:00
Oliver Schneider
ef5fc75c35 various testing improvements 2016-04-22 20:09:00 +02:00