rust/src
Jed Davis d90830221e Fix ICE on statics with fancy nullable enums.
Closes #8506.

The `trans::adt` code for statics uses fields with `C_undef` values to
insert alignment padding (because LLVM's own alignment padding isn't
always sufficient for aggregate constants), and assumes that all fields
in the actual Rust value are represented by non-undef LLVM values, to
distinguish them from that padding.

But for nullable pointer enums, if non-null variant has fields other
than the pointer used as the discriminant, they would be set to undef in
the null case, to reflect that they're never accessed.

To avoid the obvious conflict between these two items, the latter undefs
were wrapped in unary LLVM structs to distinguish them from the former
undefs.  Except this doesn't actually work -- LLVM, not unreasonably,
treats the "wrapped undef" as a regular undef.

So this commit just sets all fields to null in the null pointer case of
a nullable pointer enum static, because the other fields don't really
need to be undef in the first place.
2014-03-05 21:23:33 -08:00
..
compiler-rt@f4b221571c Update compiler-rt 2014-02-17 19:58:47 -08:00
compiletest Rename all variables that have uppercase characters in their names to use only lowercase characters 2014-03-04 21:23:36 -05:00
doc auto merge of #12491 : eddyb/rust/deref, r=nikomatsakis 2014-03-04 23:21:42 -08:00
driver rustc: Use libnative for the compiler 2014-02-27 12:03:58 -08:00
etc auto merge of #12663 : MicahChalmer/rust/emacs-remove-ws-bug-warning, r=brson 2014-03-02 20:56:30 -08:00
gyp@1e46da1000 Update bundled gyp 2013-12-28 10:42:25 -08:00
libarena Replaced list::each with iter() in Arenas's Drop impl 2014-02-27 08:35:18 -04:00
libcollections std: Change assert_eq!() to use {} instead of {:?} 2014-02-28 23:01:54 -08:00
libextra stats: fix handling of NaN in min and max 2014-03-05 19:20:06 -05:00
libflate flate: return CVec<u8> rather than copying into a new vector. 2014-02-24 01:15:39 +11:00
libfourcc libfourcc: Fix errors arising from the automated ~[T] conversion 2014-03-01 22:40:53 -08:00
libgetopts std: Change assert_eq!() to use {} instead of {:?} 2014-02-28 23:01:54 -08:00
libglob Transition to new Hash, removing IterBytes and std::to_bytes. 2014-02-24 07:44:10 +11:00
libgreen auto merge of #12667 : Kimundi/rust/any_improv, r=cmr 2014-03-04 13:16:41 -08:00
libnative auto merge of #12667 : Kimundi/rust/any_improv, r=cmr 2014-03-04 13:16:41 -08:00
libnum Rename all variables that have uppercase characters in their names to use only lowercase characters 2014-03-04 21:23:36 -05:00
librustc Fix ICE on statics with fancy nullable enums. 2014-03-05 21:23:33 -08:00
librustdoc rustdoc: tweak highlighting 2014-03-04 18:37:09 +01:00
librustuv Publicise types/add #[allow(visible_private_types)] to a variety of places. 2014-03-01 00:12:34 +11:00
libsemver Exclude build metadata from equality checking. 2014-02-25 11:37:38 +09:00
libserialize Rename all variables that have uppercase characters in their names to use only lowercase characters 2014-03-04 21:23:36 -05:00
libstd add tests for min and max from Float 2014-03-05 19:20:03 -05:00
libsync Rename all variables that have uppercase characters in their names to use only lowercase characters 2014-03-04 21:23:36 -05:00
libsyntax Refactor and fix FIXME's in mtwt hygiene code 2014-03-05 22:45:51 +08:00
libterm doc: use the newer favicon 2014-03-04 18:37:51 +01:00
libtest add correct floating point min and max methods. 2014-03-05 11:20:50 -05:00
libtime std: Change assert_eq!() to use {} instead of {:?} 2014-02-28 23:01:54 -08:00
libuuid Remove std::from_str::FromStr from the prelude 2014-02-24 21:22:26 -08:00
libuv@800b56fe6a Make priavcy checking aware that a use directive can point to two defintions (namespaces) with different privacy. Closes #4110 2014-02-19 14:47:10 +13:00
llvm@263c617d66 Update LLVM 2014-02-25 09:37:30 -08:00
rt Upgrade libuv 2014-02-16 16:01:03 -08:00
rustllvm rustc: Get rustc compiling with LLVM 3.{3,4} again 2014-02-26 15:01:15 -08:00
test Fix ICE on statics with fancy nullable enums. 2014-03-05 21:23:33 -08:00
README.md Update source code layout in src/ 2014-02-24 21:22:27 -08:00
snapshots.txt Register new snapshots 2014-03-03 18:00:52 -08:00

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

Source layout:

Path Description
librustc/ The self-hosted compiler
libstd/ The standard library (imported and linked by default)
libextra/ The "extras" library (slightly more peripheral code)
libgreen/ The M:N runtime library
libnative/ The 1:1 runtime library
libsyntax/ The Rust parser and pretty-printer
libcollections/ A collection of useful data structures and containers
libnum/ Extended number support library (complex, rational, etc)
libtest/ Rust's test-runner code
------------------- ---------------------------------------------------------
libarena/ The arena (a fast but limited) memory allocator
libflate/ Simple compression library
libfourcc/ Data format identifier library
libgetopts/ Get command-line-options library
libglob/ Unix glob patterns library
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
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
libuv/ The libuv submodule
librustuv/ Rust libuv support code
------------------- ---------------------------------------------------------
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.