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
6d97d02c52
autogenerate markdown for rustc test suite result
2017-02-10 09:34:09 +01: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
bc5d9b6f8d
Merge pull request #127 from oli-obk/print_panic
...
ignore `print!`, turn `panic!` into a EvalError
2017-02-09 11:14:47 +01:00
Oliver Schneider
fb2d393427
update tests
2017-02-09 10:59:42 +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
98cda6cb07
freeze -> static
2017-02-07 20:28:54 +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
5118aadee2
reenable rustc run pass tests
2017-02-07 12:32:39 +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
148c6de507
fix some unaligned reads
2017-01-31 10:36:46 +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
548a6baec0
also test transmutes to empty enums
2017-01-12 11:23:44 +01:00
Oliver Schneider
b5f824fd9c
fix ICE when transmuting inhabited types to uninhabited
2017-01-12 09:59:00 +01:00
Oliver Schneider
753dbcf158
add a test for dereferencing a pointer to a !
2017-01-12 09:41:36 +01:00
Oliver Schneider
7c486416cb
allow the use of tuple struct constructors as functions
2017-01-12 08:52:22 +01:00
Oliver Schneider
ccfcc12a58
aux tests only run if the host is set
2017-01-12 08:45:09 +01:00
Oliver Schneider
ae7d69a5bd
msvc has different internals for mutexes and thus fails on a different function
2017-01-12 08:41:57 +01:00
Oliver Schneider
2f51310a80
clamp down on hacks in compiletest
2017-01-12 08:41:22 +01:00
Oliver Schneider
1f40819315
try to pin down the travis failure
2017-01-12 08:41:12 +01:00
Oliver Schneider
5d7b92a6e3
fix travis
2017-01-12 08:40:53 +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
96b83ebb7c
Improve compiletest target detection.
2016-12-17 00:54:37 -08:00
Scott Olson
42239e69bf
Make layout SizeOverflow test trigger on i686.
2016-12-16 23:57:46 -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
33223fdd76
Allow compiletest to see symlinked targets.
2016-12-16 23:43:58 -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
8b8c7430f1
re-use mir-opt
compiletest instead of rolling our own
2016-12-14 17:06:36 +01:00
Scott Olson
fc3e1c0064
compiletest: Don't automatically enable MIRI_LOG=trace.
2016-11-26 23:21:25 -08:00
Oliver Schneider
986b3a07c2
layout computation can fail, make it fail with a miri error
2016-11-18 10:38:07 +01:00
Oliver Schneider
26ccc1e4bc
add a step counter that can be changed during interpretation
2016-11-18 10:38:07 +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
4ebf7bfea6
rustup allows one to install the rust source, that's obviously not a target
2016-11-17 11:31:53 +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 Schneider
13f22f8344
print traces only when not running on the rust run-pass test suite (since tracing is slow)
2016-11-15 14:33:07 +01:00
Oliver Schneider
14ff6411f0
make sure ByVal pointers act just like ByRef to a pointer
2016-11-15 14:12:49 +01:00
Oliver Schneider
511fa40d23
add test for int -> fn ptr cast
2016-11-15 14:11:00 +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
8003c570d8
don't panic on pointer to value comparison in primvals
2016-11-04 15:49:14 +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
6503148589
Optimize reads of field projections of ByValPairs.
...
This helps in the case of field projections of the results of checked
binary operations. E.g.:
_1 = CheckedAdd(const 1i32, const 2i32);
assert(!(_1.1: bool), "attempt to add with overflow" -> bb1
Previously, the `_1.1` field projection lvalue would force_allocate `_1`
so it could read the memory in the old-style way. Now checked math with
its assertions will not allocate at all.
The oom2.rs compile-fail test had to be re-written, because the old
version of it no longer allocates _at all_ (yay!), so it would hit the
stack depth limit instead, from recursion.
2016-10-16 19:58:22 -06:00
Scott Olson
b1094f6c1e
Deallocate primval conversion hack allocs.
...
It's a hack, sure, but it should learn some manners.
2016-10-16 03:21:41 -06:00
Scott Olson
49e6c57ef9
Do not pre-allocate local variables.
...
Thanks to the `Value` locals refactoring, now primitive locals (ints,
floats, chars, bools, and the like) will not require `Allocation`s at
all, and locals that are never initialized at all because of conditional
control flow won't be wasting memory.
2016-10-15 23:31:42 -06:00
Scott Olson
6c463b7562
Hold an Lvalue for the return pointer in a frame.
...
Previously ReturnPointer was just the first slot in the locals array,
which had type `Vec<Pointer>`. But after my recent refactoring, locals
is `Vec<Value>` and it became increasingly hacky to pull a pointer out
of the first slot to be the value. Besides, that hack wouldn't allow
ReturnPointer to ever be an `Lvalue::Local`, referring directly to a
local on a higher stack frame.
Now ReturnPointer has no presence in the locals array, instead being
upgraded to its own field on `Frame`.
This introduces a couple of new hacks, detailed by some of my FIXME
comments, so that I could get the tests passing again and commit. More
commits coming soon should clean up these hacks without much trouble,
and overall I feel that the code is converging on a cleaner, more
efficient design.
2016-10-15 19:48:30 -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
787feaad4b
allow tuple field indexing into anonymous tuples
2016-09-28 18:22:53 +02:00
Oliver Schneider
1c18f6ddfa
implement slice patterns
2016-09-28 18:22:09 +02:00
Oliver Schneider
73f6d6e418
fix run-pass test error message parsing
2016-09-28 14:53:43 +02:00
Oliver Schneider
9e9d05e3ef
run compile-fail tests after run-pass tests
...
it's annoying when debugging miri to have compile-fail tests fail due to some temporary
assertions or panics.
2016-09-28 14:53:11 +02:00
Oliver Schneider
5b89f3fb94
implement Arc<T> -> Arc<Trait> unsizing
2016-09-27 18:01:33 +02:00
Oliver Schneider
622d407e0e
don't abort on the first failed test
2016-09-27 17:02:24 +02:00
Oliver Schneider
f4516e738b
be able to find statics in other crates
2016-09-27 17:02:04 +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
875a4542f9
remove the ZST allocation and abort all zero byte writes/reads
2016-09-22 15:22:00 +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
c679c71def
Freeze static memory of string constants.
2016-09-19 04:10:18 -06:00
Scott Olson
20ced4a720
Replace const_to_ptr with const_to_value.
...
This reduces the number of allocations Miri makes drastically. The
`const_to_ptr` function was a lame hack that allocated for every since simple
constant, and all of those are avoided now, except for one extra allocation each
for string and bytestring literals which will be fixed in a followup commit.
There are a number of hacks such as `eval_operand_to_ptr` left over from this
commit, which will also be fixed in followup commits.
2016-09-19 02:19:34 -06: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
Oliver Schneider
0d2a403a51
run all tests found in folder given by MIRI_RUSTC_TEST env var
2016-09-15 16:13:54 +02:00
Oliver Schneider
eb594da409
forbid warnings only in the actual run-pass tests, not in the miri-pass tests
2016-09-15 16:12:36 +02:00
Scott Olson
2e70fcdca8
Undo accidental test deletion in previous commit.
2016-09-13 20:17:52 -06:00
Scott Olson
366c793306
Fix tests broken by std::vec::SetLenOnDrop.
2016-09-13 20:14:07 -06:00
Oliver Schneider
23eb8a5cf2
error on failed assumptions
2016-09-13 13:08:57 +02: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
ad053d66fe
change the block and stmt position after a function call returns
...
previously we moved to the target block *before* calling a function, so when inspecting
the stack, it appeared as if we were in the first statement of the next block.
2016-09-07 12:48:29 +02:00
Oliver Schneider
f5a89d297c
rustc now can use integer literals in attributes
2016-09-07 10:27:57 +02:00
Scott Olson
45cf3cfde2
Update for changes in rustc.
2016-08-27 01:44:54 -06:00
Oliver Schneider
ec897f9156
don't allow runtime-aligning of memory
2016-07-22 16:35:39 +02:00
Oliver Schneider
4c258d1ed2
Merge remote-tracking branch 'origin/master' into alignment
2016-07-07 13:17:08 +02:00
Oliver Schneider
9669acc3a3
Merge remote-tracking branch 'origin/master' into the_outer_limits
2016-07-07 11:27:49 +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
aca691160d
add a test
2016-07-06 11:19:24 +02:00
Oliver Schneider
082effb3ee
align allocations in the worst possible way
2016-07-05 14:27:27 +02:00
Oliver Schneider
4781a6ba54
add attribute to limit the stack size
2016-07-05 13:23:58 +02:00
Oliver Schneider
88d98998e1
add execution time limit
2016-07-05 13:17:40 +02:00
Oliver Schneider
3e5d86bb08
test the memory limit
2016-07-05 13:04:53 +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
3d9588332f
address comments
2016-07-01 13:09:40 +02:00
Oliver Schneider
594f1d79da
optimize all ZST allocations into one single allocation
2016-07-01 13:09:17 +02:00
Scott Olson
64eca52ad3
Run Mir passes (copied from rustc pre-trans).
2016-06-30 21:33:24 -06:00
Oliver Schneider
ae3c49a9e5
use the item path printer that prints user friendly textual paths
2016-06-29 17:07:05 +02:00
Oliver Schneider
055b6a8d38
store full TargetDataLayout in Memory instead of just pointer size
2016-06-23 09:36:37 +02:00
Oliver Schneider
b33a9f3431
there can never be too many tests
2016-06-23 09:36:37 +02:00
Oliver Schneider
3404a9da2a
add test for invalid char
2016-06-23 09:36:37 +02:00
Oliver Schneider
2dbd30fa51
implement char handling
2016-06-21 09:35:20 +02:00