rust/src
Huon Wilson 071c411045 Translate SIMD construction as insertelements and a single store.
This almost completely avoids GEPi's and pointer manipulation,
postponing it until the end with one big write of the whole vector. This
leads to a small speed-up in compilation, and makes it easier for LLVM
to work with the values, e.g. with `--opt-level=0`,

    pub fn foo() -> f32x4 {
        f32x4(0.,0.,0.,0.)
    }

was previously compiled to

    define <4 x float> @_ZN3foo20h74913e8b13d89666eaaE() unnamed_addr #0 {
    entry-block:
      %sret_slot = alloca <4 x float>
      %0 = getelementptr inbounds <4 x float>* %sret_slot, i32 0, i32 0
      store float 0.000000e+00, float* %0
      %1 = getelementptr inbounds <4 x float>* %sret_slot, i32 0, i32 1
      store float 0.000000e+00, float* %1
      %2 = getelementptr inbounds <4 x float>* %sret_slot, i32 0, i32 2
      store float 0.000000e+00, float* %2
      %3 = getelementptr inbounds <4 x float>* %sret_slot, i32 0, i32 3
      store float 0.000000e+00, float* %3
      %4 = load <4 x float>* %sret_slot
      ret <4 x float> %4
    }

but now becomes

    define <4 x float> @_ZN3foo20h74913e8b13d89666eaaE() unnamed_addr #0 {
    entry-block:
      ret <4 x float> zeroinitializer
    }
2014-11-05 00:02:43 +11:00
..
compiler-rt@62a4ca6055
compiletest debuginfo: Make GDB tests use line breakpoints like done in LLDB tests. 2014-10-31 18:49:59 +01:00
doc auto merge of #18459 : alexcrichton/rust/rollup, r=alexcrichton 2014-10-31 02:27:15 +00:00
driver Updated to new extern crate syntax. 2014-09-01 09:02:00 -07:00
etc auto merge of #17851 : brson/rust/rustup, r=alexcrichton 2014-10-28 17:47:01 +00:00
grammar Use common variants for open and close delimiters 2014-10-30 09:35:52 +11:00
jemalloc@b001609960 update jemalloc 2014-10-05 22:17:25 -04:00
liballoc bubble up out-of-memory errors from liballoc 2014-11-01 19:23:20 -04:00
libarena bubble up out-of-memory errors from liballoc 2014-11-01 19:23:20 -04:00
libbacktrace
libcollections auto merge of #18456 : gamazeps/rust/issue18449, r=thestinger 2014-11-02 23:27:10 +00:00
libcore Add error module with Error and FromError traits 2014-11-02 15:25:38 -08:00
libcoretest rollup merge of #18398 : aturon/lint-conventions-2 2014-10-30 17:37:22 -07:00
libflate Use the same html_root_url for all docs 2014-10-09 10:50:13 -07:00
libfmt_macros Add enum variants to the type namespace 2014-09-19 15:11:00 +12:00
libgetopts rollup merge of #18445 : alexcrichton/index-mut 2014-10-30 17:37:55 -07:00
libgraphviz collections: Remove all collections traits 2014-11-01 11:37:04 -07:00
libgreen Rename fail! to panic! 2014-10-29 11:43:07 -04:00
liblibc Update code with new lint names 2014-10-28 08:54:21 -07:00
liblog rollup merge of #18398 : aturon/lint-conventions-2 2014-10-30 17:37:22 -07:00
libnative Test fixes and rebase conflicts 2014-10-30 17:37:56 -07:00
librand rollup merge of #18398 : aturon/lint-conventions-2 2014-10-30 17:37:22 -07:00
librbml Tuple deserialization should not fail 2014-11-01 10:54:34 -07:00
libregex collections: Remove all collections traits 2014-11-01 11:37:04 -07:00
libregex_macros rollup merge of #18398 : aturon/lint-conventions-2 2014-10-30 17:37:22 -07:00
librlibc collections: Remove all collections traits 2014-11-01 11:37:04 -07:00
librustc Translate SIMD construction as insertelements and a single store. 2014-11-05 00:02:43 +11:00
librustc_back rollup merge of #18398 : aturon/lint-conventions-2 2014-10-30 17:37:22 -07:00
librustc_llvm Update code with new lint names 2014-10-28 08:54:21 -07:00
librustdoc Fix RustDoc bug 2014-11-01 11:05:12 +13:00
librustrt bubble up out-of-memory errors from liballoc 2014-11-01 19:23:20 -04:00
libserialize Add Error impls to a few key error types 2014-11-02 15:31:52 -08:00
libstd Add Error impls to a few key error types 2014-11-02 15:31:52 -08:00
libsync bubble up out-of-memory errors from liballoc 2014-11-01 19:23:20 -04:00
libsyntax collections: Remove all collections traits 2014-11-01 11:37:04 -07:00
libterm DSTify Hash 2014-10-31 07:25:34 -05:00
libtest rollup merge of #18445 : alexcrichton/index-mut 2014-10-30 17:37:55 -07:00
libtime Rename fail! to panic! 2014-10-29 11:43:07 -04:00
libunicode collections: Remove all collections traits 2014-11-01 11:37:04 -07:00
llvm@ec1fdb3b9d Update LLVM to get slightly better memcpy elision 2014-10-17 17:16:18 +02:00
rt remove the uv_support code 2014-10-02 05:05:12 -04:00
rustllvm optimize position independent code in executables 2014-10-12 09:18:14 -04:00
test auto merge of #18406 : thestinger/rust/oom, r=cmr 2014-11-02 21:22:14 +00:00
README.md Remove librustuv 2014-10-01 10:34:39 -07:00
snapshots.txt Register new snapshots 2014-10-23 09:38:37 -07:00

This is a preliminary version of the Rust compiler, libraries and tools.

Source layout:

Path Description
librustc/ The self-hosted compiler
liballoc/ Rust's core allocation library
libcore/ The Rust core library
libdebug/ Debugging utilities
libstd/ The standard library (imported and linked by default)
libgreen/ The M:N runtime library
libnative/ The 1:1 runtime library
libsyntax/ The Rust parser and pretty-printer
libtest/ Rust's test-runner code
------------------- ---------------------------------------------------------
libarena/ The arena (a fast but limited) memory allocator
libbacktrace/ The libbacktrace library
libcollections/ A collection of useful data structures and containers
libflate/ Simple compression library
libfmt_macros/ Macro support for format strings
libfourcc/ Data format identifier library
libgetopts/ Get command-line-options library
libglob/ Unix glob patterns library
libgraphviz/ Generating files for Graphviz
libhexfloat/ Hexadecimal floating-point literals
liblibc/ Bindings for the C standard library
liblog/ Utilities for program-wide and customizable logging
libnum/ Extended number support library (complex, rational, etc)
librand/ Random numbers and distributions
libregex/ Regular expressions
libregex_macros/ The regex! syntax extension
libsemver/ Rust's semantic versioning library
libserialize/ Encode-Decode types library
libsync/ Concurrency mechanisms and primitives
libterm/ ANSI color library for terminals
libtime/ Time operations library
liburl/ URL handling lirary
libuuid/ UUID's handling code
------------------- ---------------------------------------------------------
rt/ The runtime system
rt/rust_*.c - Some of the runtime services
rt/vg - Valgrind headers
rt/msvc - MSVC support
rt/sundown - The Markdown library used by rustdoc
------------------- ---------------------------------------------------------
compiletest/ The test runner
test/ Testsuite
test/codegen - Tests for the LLVM IR infrastructure
test/compile-fail - Tests that should fail to compile
test/debug-info - Tests for the debuginfo tool
test/run-fail - Tests that should compile, run and fail
test/run-make - Tests that depend on a Makefile infrastructure
test/run-pass - Tests that should compile, run and succeed
test/bench - Benchmarks and miscellaneous
test/pretty - Pretty-printer tests
test/auxiliary - Dependencies of tests
------------------- ---------------------------------------------------------
librustdoc/ The Rust API documentation tool
------------------- ---------------------------------------------------------
llvm/ The LLVM submodule
rustllvm/ LLVM support code
------------------- ---------------------------------------------------------
etc/ Scripts, editors support, misc

NOTE: This list (especially the second part of the table which contains modules and libraries) is highly volatile and subject to change.