23 Commits

Author SHA1 Message Date
Eduard Burtescu
5eeda543df mir: Use usize instead of u32 for indexing slices. 2016-03-17 21:51:55 +02:00
Eduard Burtescu
d9277b163c trans: Make everything used from within at_start Builder-friendly. 2016-03-17 21:51:54 +02:00
Eduard Burtescu
b38627dafb mir: Use the right form of GEPi for indexing slices vs arrays. 2016-03-17 21:51:53 +02:00
Eduard Burtescu
56417b3732 mir: Monomorphize LvalueTy's of projections. 2016-03-17 21:51:53 +02:00
Eduard Burtescu
aec63821d0 trans: Handle all function setup for all ABIs via FnType. 2016-03-17 21:51:52 +02:00
Eduard Burtescu
5af3c12cfc trans: Move static item handling to consts. 2016-03-17 18:19:29 +02:00
Simonas Kazlauskas
ba26efb60c Implement filling drop in MIR
Hopefully the author caught all the cases. For the mir_dynamic_drops_3 test case the ratio of
memsets to other instructions is 12%. On the other hand we actually do not double drop for at least
the test cases provided anymore in MIR.
2016-02-24 21:05:21 +02:00
Ariel Ben-Yehuda
3c6f41026b store the normalized types of field accesses
Fixes #31504
2016-02-20 01:54:58 +02:00
Piotr Czarnecki
06266eb3bd Refactor the MIR translator to use LLVM Builder directly 2016-02-08 11:41:24 +01:00
Simonas Kazlauskas
ebf6341d1d Translation part of drop panic recovery
With this commit we now finally execute all the leftover drops once some drop panics for some
reason!
2016-02-04 15:56:05 +02:00
Oliver 'ker' Schneider
6fef118bc0 use a newtype for the variant discriminant instead of u64 2016-01-16 16:03:09 +01:00
Jeffrey Seyfried
76021d84b3 Refactor away extension traits RegionEscape and HasTypeFlags 2016-01-07 00:42:12 +00:00
Simonas Kazlauskas
20ec53a0d3 Fix ReturnPointer generation for void return types
Fixes #30480
2016-01-06 13:57:52 +02:00
Simonas Kazlauskas
2b2f983523 Fix GEPs for MIR indexing translation
Fixes #30474
2015-12-19 20:30:13 +02:00
James Miller
a2557d472e Align pointers to DST fields properly
DST fields, being of an unknown type, are not automatically aligned
properly, so a pointer to the field needs to be aligned using the
information in the vtable.

Fixes #26403 and a number of other DST-related bugs discovered while
implementing this.
2015-12-08 00:03:45 +13:00
Michael Woerister
bbe1d28496 Move the core MIR datastructures to librustc.
This is done mostly so that we can refer to MIR types in csearch and other metadata related area.
2015-11-30 10:03:33 +01:00
Michael Woerister
c533902285 MIR: Add pass that erases all regions right before trans 2015-11-18 17:26:24 +01:00
Ariel Ben-Yehuda
e82f5d4f54 implement coercions in MIR 2015-11-14 00:09:36 +02:00
Ariel Ben-Yehuda
c1bfd0ca6b implement lvalue_len
no tests - sorry
2015-11-13 22:47:02 +02:00
Ariel Ben-Yehuda
dcb64b52a2 represent fat ptr operands as 2 separate pointers
this does add some complexity, but to do otherwise would require unsized
lvalues to have their own allocas, which would be ugly.
2015-11-13 22:47:02 +02:00
Simonas Kazlauskas
21deb18bfd [MIR trans] Translate statics
Fixes #29578
2015-11-11 00:15:16 +02:00
Niko Matsakis
e84829d51d Plumbing to omit allocas for temps when possible (currently unused) 2015-11-03 04:35:00 -05:00
Niko Matsakis
02017b30eb New trans codepath that builds fn body from MIR instead. 2015-11-03 04:35:00 -05:00