Get rid of unused SimpleVisitor stuff.
Guarantee that statics have unique names

While they may have the same name within various scopes, this changes static
names to use path_pretty_name to append some hash information at the end of the
symbol. We're then guaranteed that each static has a unique NodeId, so this
NodeId is as the "hash" of the pretty name.

Closes #9188
debuginfo: Basic support for trait objects.
debuginfo: Implement DI for ty_opaque_box.
debuginfo: Support for recursive types.
debuginfo: Added test cases for recursive structs.
debuginfo: Added description of algorithm for handling recursive types.

Also fixed nasty bug caused by calling LLVMDIBuilderCreateStructType() with a null pointer where an empty array was expected (which would trigger an unintelligable assertion somewhere down the line).
debuginfo: Fix style nits for pull request.
debuginfo: Some namespace-related cleanup.
auto merge of #9209 : blake2-ppc/rust/from-str, r=thestinger

Remove these in favor of the two traits themselves and the wrapper
function std::from_str::from_str.

Add the function std::num::from_str_radix in the corresponding role for
the FromStrRadix trait.

With `from_str` in the prelude, and `from_str_radix` in `std::num`, the feature is unfied under the type annotation of these functions instead of using the modules-named-as-types (std::uint and others):

What was before:

    let n = std::uint::from_str("1");
    let m = std::i32::from_str_radix("10", 16);

is now:

    let n = from_str::<uint>("1");
    let m = std::num::from_str_radix::<i32>("10", 16);
debuginfo: Added LLVMDICompositeTypeSetTypeArray to rustllvm.def.in
rustpkg: Cleanup
auto merge of #9150 : catamorphism/rust/rustpkg-cleanup, r=catamorphism

Just refactoring in tests.rs.
auto merge of #9168 : michaelwoerister/rust/traits, r=jdm

This pull request finally adds support for recursive type definitions and provides a stub implementation for object pointers.
rust test: pass the remaining arguments through

The arguments after `rust test filename.rs` should be passed through
to the test binary. This allows the `rust` command to be used to run a
subset of tests, to run ignored tests, and to run benchmarks.
auto merge of #9213 : dcrewi/rust/rust-test-arguments, r=catamorphism

The arguments after `rust test filename.rs` should be passed through
to the test binary. This allows the `rust` command to be used to run a
subset of tests, to run ignored tests, and to run benchmarks.
remove unused `FastCall` wrapper

this can just be done using CallWithConv
Upgrade LLVM to close #9117
teach Call/CallWithConv to set attributes
When declaring extern fns from external crates, use the correct abi

Beforehand it was assumed that the standard cdecl abi was used for all extern
fns of extern crates, but this reads the abi of the extern fn type and declares
the function in the local crate with the appropriate type.