rust/src
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
..
comp Better handling of unreachable code in trans 2011-09-23 11:09:57 +02:00
etc Don't check-fast xfail-win32 tests 2011-09-11 17:31:41 -07:00
fuzzer Ignore #949 2011-09-20 16:42:58 -07:00
lib Revert "Implement pattern ranges for all numeric types." 2011-09-21 18:42:09 +02:00
rt Remove is_stateful flag from tydesc. Closes #136 2011-09-22 22:15:25 -07:00
rustllvm Add Rust definitions for new LLVM EH instructions 2011-09-11 17:31:38 -07:00
test Better handling of unreachable code in trans 2011-09-23 11:09:57 +02:00
README Revert trivial commit. 2011-09-20 17:20:14 -07:00
snapshots.txt Register new snapshot 2011-09-15 17:33:35 +02:00

This is preliminary version of the Rust compiler.

Source layout:

comp/              The self-hosted compiler

lib/               The standard library

rustllvm/          LLVM support code

rt/                The runtime system
rt/rust_*.cpp      - The majority of the runtime services
rt/isaac           - The PRNG used for pseudo-random choices in the runtime
rt/bigint          - The bigint library used for the 'big' type
rt/uthash          - Small hashtable-and-list library for C, used in runtime
rt/libuv           - The library used for async IO in the runtime
rt/{sync,util}     - Small utility classes for the runtime.

test/              Testsuite
test/compile-fail  - Tests that should fail to compile
test/run-fail      - Tests that should compile, run and fail
test/run-pass      - Tests that should compile, run and succeed
test/bench         - Benchmarks and miscellanea

Please be gentle, it's a work in progress.