about summary refs log tree commit diff
path: root/src/comp/middle
AgeCommit message (Collapse)AuthorLines
2011-09-11Invoke upcall_failBrian Anderson-4/+15
This allows landing pads to be generated around fail statements Issue #236
2011-09-11Run cleanups during unwindingBrian Anderson-0/+12
Issue #236
2011-09-11Zero locals that have initializers that might failBrian Anderson-24/+27
This will avoid running cleanups on uninitialized memory Issue #236
2011-09-11Add landing pads to invokesBrian Anderson-4/+28
Issue #236
2011-09-11Add Rust definitions for new LLVM EH instructionsBrian Anderson-0/+16
Issue #236
2011-09-11Use invoke to call (most) rust functionsBrian Anderson-1/+32
No landing pads yet. Issue #236
2011-09-09Revert "Make for loops alias the vec elements, rather than copy them"Marijn Haverbeke-6/+12
This reverts commit 985ef59efd971f1d6b9bf4b5e484b75733e00444.
2011-09-09Get rid of vp2i in object field accessMarijn Haverbeke-18/+3
Closes #557
2011-09-09Make for loops alias the vec elements, rather than copy themMarijn Haverbeke-12/+6
The alias analysis was already assuming that it worked like this.
2011-09-09Get rid of trans::iter_sequence, use tvec::iter_vec insteadMarijn Haverbeke-97/+15
2011-09-09Use a Phi node in trans_vec::iter_vec_rawMarijn Haverbeke-21/+11
Rather than incrementing a spilled pointer
2011-09-09Don't put 0-length array in the lltype of an arg-less variantMarijn Haverbeke-1/+5
This seems to confuse LLVM in some very specific situations. Closes #883
2011-09-09Fix scope issue in resolution of alt-arm patternsMarijn Haverbeke-5/+5
Closes #885
2011-09-08rustc: When revoking a cleanup of a unique pointer, zero it out so that the ↵Patrick Walton-15/+25
GC won't try to visit it
2011-09-08rustc: Make unique pointers no longer immediates.Patrick Walton-70/+88
2011-09-07Export tag discriminants even for single-variant tagsBrian Anderson-4/+2
I don't know exactly what's going on but this optimization is giving me problems with the check-fast runner. I also don't see how it is correct for external tags.
2011-09-07Work around destructuring bugMarijn Haverbeke-13/+21
2011-09-07Make it possible to take the value of (and bind) native fnsMarijn Haverbeke-33/+28
Closes #820
2011-09-06Forbid blocks from deinitializing upvarsTim Chevalier-2/+22
Move expressions where the RHS is an upvar are now forbidden within block expressions.
2011-09-02Rename istr-stuff to str in rustc. Issue #855Brian Anderson-10/+10
2011-09-02Rename ty_istr to ty_str. Issue #855Brian Anderson-28/+28
2011-09-02Reformat. Issue #855Brian Anderson-2053/+1928
2011-09-02Add a constraint to trans::type_ofTim Chevalier-116/+231
trans::type_of now has a constraint saying that its type argument is statically sized. This eliminates the "impossible happened" case in type_of. Yay! I note that this change decreased translation time for stage2/rustc from 16.1 s to 14.0 s. I also think many of the remaining checks could be eliminated with some mildly clever use of constrained types and further preconditions. Future work!
2011-09-02Handle if-check with no else correctly in typestateTim Chevalier-4/+17
Propagate the if-check constraint into the consequent even when there's no else branch. (Oops!)
2011-09-02rustc: Zero out unique pointers after we drop themPatrick Walton-1/+7
2011-09-02Eliminate const_refcount. Issue #855Brian Anderson-18/+6
2011-09-02rustc: Root values spilled via do_spill()Patrick Walton-42/+76
2011-09-02rustc: Make the shape-emitting code aware of linearized type parametersPatrick Walton-16/+44
2011-09-02Rename ivecs to vecs in the compilerMarijn Haverbeke-100/+71
2011-09-02Remove remaining evec support from transMarijn Haverbeke-131/+8
2011-09-01Remove lots of estr code from rustc. Issue #855Brian Anderson-103/+17
2011-09-01Convert all uses of #ifmt to #fmt. Issue #855Brian Anderson-36/+36
2011-09-01Add a constraint in transTim Chevalier-9/+31
Experimenting with adding typestate constraints in the compiler. Added a constraint to GEP_tag that says the variant index is in bounds. Added necessary checks.
2011-09-01Rename std::istr to std::str. Issue #855Brian Anderson-188/+188
2011-09-01Make GEP_tag take a uint instead of an intTim Chevalier-9/+9
Seems to make more sense and avoids the need for some casts.
2011-09-01Remove std::str. Issue #855Brian Anderson-12/+1
2011-09-01No, not all fn constraints have the same args as the fn does, in the same ↵Tim Chevalier-4/+18
order... derp! Closes #862
2011-09-01Remove misleading outdated comment in alias.rsMarijn Haverbeke-5/+1
2011-09-01Back out copy-glueMarijn Haverbeke-85/+2
This wasn't a good idea after all.
2011-09-01Allow istrs as patterns. Issue #855Brian Anderson-5/+9
2011-09-01Remove various istr conversions. Issue #855Brian Anderson-9/+9
2011-09-01Make alias analysis properly recognize closures in call positionMarijn Haverbeke-1/+1
I figured this'd break a few things, but in fact it causes no problems whatsoever.
2011-09-01Make resolve recognize upvarsMarijn Haverbeke-244/+206
Upvars are now marked with def_upvar throughout, not just when going through freevars::lookup_def. This makes things less error-prone. One thing to watch out for is that def_upvar is used in `for each` bodies too, when they refer to a local outside the body.
2011-09-01Move mutability checking into its own pass.Marijn Haverbeke-278/+277
Having it in the alias pass was slightly more efficient (finding expression roots has to be done in both passes), but further muddled up the already complex alias checker. Also factors out some duplication in the mutability-checking code.
2011-09-01Store arg mode and objfield mutability in their defMarijn Haverbeke-39/+39
2011-09-01Clean up handling of restriction contexts in alias analysisMarijn Haverbeke-93/+94
2011-08-31rt: Make the dynamic stack self-describingPatrick Walton-5/+12
2011-08-31Remove a few more usages of std::str from rustc. Issue #855Brian Anderson-2/+0
2011-08-31Don't check arguments types if there are an incorrect number of args. Closes ↵Michael Sullivan-5/+3
#871.
2011-08-31Check all paths return properly in blocks. Closes #874.Michael Sullivan-1/+1