2531 Commits

Author SHA1 Message Date
Marijn Haverbeke
d114dedf9a Don't return unused values from zero_alloca and trans_stmt 2011-09-23 22:28:05 +02:00
Marijn Haverbeke
abf002ad60 Fix bug where the type of a function's top-level block wasn't fixed up 2011-09-23 22:28:05 +02:00
Marijn Haverbeke
348cd86d87 Properly check types of do-while condition expr
Closes #956
2011-09-23 11:19:15 +02:00
Marijn Haverbeke
0bbde048a4 Make sure no dynamic allocas are used before they are allocated
Closes #965
2011-09-23 11:11:37 +02:00
Marijn Haverbeke
49813cffb1 Use a slightly nicer hack to get zero-length strings in trans_build
Wrapping calls in str::by_ref(, ...) heap-allocated an empty string
every time (and looked really bad).
2011-09-23 11:11:37 +02:00
Marijn Haverbeke
420484579d Better handling of unreachable code in trans
The builder functions in trans_build now look at an 'unreachable' flag
in the block context and don't generate code (returning undefined
placeholder values) when this flag is set. Threading the unreachable
flag through context still requires some care, but this seems a more
sane approach than re-checking for terminated blocks throughout the
compiler.

When creating a block, if you use its closest dominator as parent, the
flag will be automatically passed through. If you can't do that,
because the dominator is a scope block that you're trying to get out
of, you'll have to do something like this to explicitly pass on the
flag:

    if bcx.unreachable { Unreachable(next_cx); }

Closes #949. Closes #946. Closes #942. Closes #895. Closes #894.
Closes #892. Closes #957. Closes #958.
2011-09-23 11:09:57 +02:00
Brian Anderson
dbd2ee015a Remove is_stateful flag from tydesc. Closes #136 2011-09-22 22:15:25 -07:00
Brian Anderson
0e5f76a718 Fix ty_uniq case in maybe_auto_unbox
Closes #961
Issue #409
2011-09-22 18:14:18 -07:00
Brian Anderson
1a48023a79 Add take glue for unique boxes
Closes #962
Issue #409
2011-09-22 18:05:36 -07:00
Brian Anderson
77fcab043e Remove nonsensical load and store from trans_uniq::copy_val
Issue #409
2011-09-22 17:50:27 -07:00
Brian Anderson
7a76323459 Allow vectors to contain unique boxes. Closes #952
Issue #409
2011-09-22 17:00:53 -07:00
Patrick Walton
e372f943e2 rustc: Write raw type parameters instead of linearized type parameters in object body shapes 2011-09-22 16:13:03 -07:00
Brian Anderson
30a4eab380 Autoderef indexes and fields of unique boxes
Issue #409
2011-09-22 16:06:25 -07:00
Brian Anderson
d174d917e2 Calculate the correct kind for unique boxes
Issue #409
2011-09-22 15:28:49 -07:00
Brian Anderson
3f41563cc9 Drop the previous value when copying one unique box local to another
Issue #409
2011-09-22 13:53:34 -07:00
Brian Anderson
67bac873e0 Add assignment to unique box locals
Issue #409
2011-09-22 13:53:33 -07:00
Brian Anderson
268a9fe5fb Initialize unique box locals from other locals
Issue #409
2011-09-22 13:53:33 -07:00
Brian Anderson
5d5136df9f Convert trans_uniq asserts to preconditions
Issue #409
2011-09-22 13:53:33 -07:00
Brian Anderson
c4f02a7925 Sprinkle some asserts through trans_uniq 2011-09-22 13:53:33 -07:00
Brian Anderson
8492eed137 Move uniq trans code to trans_uniq module
Issue #409
2011-09-22 13:53:30 -07:00
Brian Anderson
0f0ba33d82 Factor alloc_uniq from trans_uniq
Issue #409
2011-09-22 13:52:30 -07:00
Brian Anderson
f6ab12a3b1 Don't unify unique boxes with different mutability
Issue #409
2011-09-22 11:10:48 -07:00
Brian Anderson
ea67099234 Add support for mutable unique boxes
Issue #409
2011-09-22 10:26:34 -07:00
Brian Anderson
1b3023e4d0 Convert ty::ty_uniq to contain a mutable type
Issue #409
2011-09-22 10:26:34 -07:00
Brian Anderson
4d088bd528 Call drop glue on the thing in a unique box
Issue #409
2011-09-22 10:26:34 -07:00
Brian Anderson
42fd2a9d89 Remove unused arg from revoke_clean 2011-09-21 15:39:46 -07:00
Brian Anderson
2cc01e2ca2 Add ability to deref unique boxes. Make unique boxes immediates.
Issue #409
2011-09-21 14:40:55 -07:00
Marijn Haverbeke
80778f642f Revert "rustc: Make bottom types immediates. Add a |log ret| testcase. Closes #935."
This reverts commit f19ab1ff3c85973a54cc98e3f98ae240e2d0d816.
2011-09-21 21:39:31 +02:00
Patrick Walton
f19ab1ff3c rustc: Make bottom types immediates. Add a |log ret| testcase. Closes #935. 2011-09-21 10:55:28 -07:00
Patrick Walton
fcd17731cf rustc: Don't try to spill bottom types, since we can't make any assumptions about the type of the ValueRef 2011-09-21 10:55:27 -07:00
Marijn Haverbeke
a034f87146 Revert "Implement pattern ranges for all numeric types."
This reverts commit ce0f054f9d56df4e60291fc2e1b89ce979cf374f.
2011-09-21 18:42:09 +02:00
Marijn Haverbeke
410f73fdb2 Don't write to retptr when returning nil, pass undef for unused params 2011-09-21 17:57:19 +02:00
Marijn Haverbeke
07eb29dbce Revert "rustc: Make bottom types immediates. Add a |log ret| testcase. Closes #935."
This reverts commit e6a84f252ab7a016dd923adbf31e8c86deab1d72.
2011-09-21 11:05:54 +02:00
Josh Matthews
ce0f054f9d Implement pattern ranges for all numeric types. 2011-09-21 09:36:12 +02:00
Patrick Walton
e6a84f252a rustc: Make bottom types immediates. Add a |log ret| testcase. Closes #935. 2011-09-20 22:52:26 -07:00
Brian Anderson
f809e22697 Represent unique creation as a unop in the AST instead of its own expr
Like the box unop.

Issue #409
2011-09-20 18:06:47 -07:00
Brian Anderson
7ae251789c Make creation of unique boxes work again
Issue #409
2011-09-20 17:51:17 -07:00
Brian Anderson
865dcb663d Parse unique box types
Issue #409
2011-09-20 17:51:17 -07:00
Patrick Walton
d607316b2f rustc: Pass actual tydescs to upcall_malloc 2011-09-20 13:48:22 -07:00
Patrick Walton
78147452b8 rustc: Remove trans_raw_malloc, as it's only called from one place 2011-09-20 13:38:54 -07:00
Brian Anderson
870117f44e Zero locals that are inited via alt expressions. Closes #945 2011-09-20 10:28:16 -07:00
Marijn Haverbeke
e33f116598 Remove some obsolete 'copy' operators from trans 2011-09-20 17:35:40 +02:00
Marijn Haverbeke
1eaddb772e Properly handle 'put;' in trans
Closes #947
2011-09-20 17:34:32 +02:00
Brian Anderson
7c6630a367 Build tuples in two phases to avoid cleaning up partial tuples 2011-09-19 17:59:53 -07:00
Brian Anderson
9626e2f71f Register tuple cleanups after the tuple is built
Issue #936
2011-09-19 17:59:47 -07:00
Brian Anderson
dd1cf63515 Build records in two phases to avoid cleanups on partial records 2011-09-19 14:28:04 -07:00
Brian Anderson
432e931a2a Don't register record cleanups until the record is built 2011-09-19 14:28:04 -07:00
Marijn Haverbeke
eafb6789a2 Stop creating function pairs for static functions
These are now called directly. When taking their value, a null pointer is added
to create a pair.
2011-09-18 22:05:58 +02:00
Tim Chevalier
8640e67e3f Add a precondition to GEP_tup_like 2011-09-17 10:18:30 -07:00
Tim Chevalier
2b98eccfee Add a type_is_tup_like predicate that takes a block ctxt, and make some fns pure 2011-09-17 10:18:11 -07:00