summary refs log tree commit diff
path: root/src/etc
AgeCommit message (Collapse)AuthorLines
2016-08-01Auto merge of #35163 - sanxiyn:rollup, r=sanxiynbors-6/+0
Rollup of 8 pull requests - Successful merges: #34802, #35033, #35085, #35114, #35134, #35140, #35141, #35157 - Failed merges:
2016-08-01Auto merge of #34743 - badboy:llvm-upgrade, r=eddybbors-0/+7
LLVM upgrade As discussed in https://internals.rust-lang.org/t/need-help-with-emscripten-port/3154/46 I'm trying to update the used LLVM checkout in Rust. I basically took @shepmaster's code and applied it on top (though I did the commits manually, the [original commits have better descriptions](https://github.com/rust-lang/rust/compare/master...avr-rust:avr-support). With these changes I was able to build rustc. `make check` throws one last error on `run-pass/issue-28950.rs`. Output: https://gist.github.com/badboy/bcdd3bbde260860b6159aa49070a9052 I took the metadata changes as is and they seem to work, though it now uses the module in another step. I'm not sure if this is the best and correct way. Things to do: * [x] ~~Make `run-pass/issue-28950.rs` pass~~ unrelated * [x] Find out how the `PositionIndependentExecutable` setting is now used * [x] Is the `llvm::legacy` still the right way to do these things? cc @brson @alexcrichton
2016-08-01Remove CMake workaroundSeo Sanghyeon-6/+0
2016-07-31Add libarena from local rust to stage0Brendan Cully-0/+1
This was needed at least when local rust was 1.9.0 on darwin. Fixes #35149
2016-07-29Update parsing llvm-config outputAlex Crichton-0/+7
Now it prints full paths on MSVC, but we're only interested in path names
2016-07-23Escape fewer Unicode codepoints in `Debug` impl of `str`Tobias Bucher-0/+154
Use the same procedure as Python to determine whether a character is printable, described in [PEP 3138]. In particular, this means that the following character classes are escaped: - Cc (Other, Control) - Cf (Other, Format) - Cs (Other, Surrogate), even though they can't appear in Rust strings - Co (Other, Private Use) - Cn (Other, Not Assigned) - Zl (Separator, Line) - Zp (Separator, Paragraph) - Zs (Separator, Space), except for the ASCII space `' '` (`0x20`) This allows for user-friendly inspection of strings that are not English (e.g. compare `"\u{e9}\u{e8}\u{ea}"` to `"éèê"`). Fixes #34318. [PEP 3138]: https://www.python.org/dev/peps/pep-3138/
2016-07-16Auto merge of #34779 - infinity0:master, r=alexcrichtonbors-0/+9
If local-rust is the same as the current version, then force a local-rebuild In Debian, we would like the option to build/rebuild the current release from *either* the current or previous stable release. So we use enable-local-rust instead of enable-local-rebuild, and read the bootstrap key dynamically from whatever is installed locally. In general, it does not make much sense to allow enable-local-rust without also setting the bootstrap key, since the build would fail otherwise. (The way I detect "the bootstrap key of [the local] rustc installation" is a bit hacky, suggestions welcome.)
2016-07-15mk: If local-rust is the same as the current version, then force a local-rebuildXimin Luo-0/+9
2016-07-14Auto merge of #34599 - cuviper:unicode-9.0, r=alexcrichtonbors-1/+1
Update Unicode tables to 9.0 I just updated `unicode.py`'s generated copyright year, then ran it.
2016-07-06Auto merge of #34689 - alexcrichton:fix-nightlies, r=alexcrichtonbors-2/+9
First attempt to fix nightlies This is just https://github.com/rust-lang/rust/pull/34669 but I added some comments so it can land.
2016-07-06etc: Comment why we're binding xrangeAlex Crichton-0/+3
Just mention there are differences between python versions
2016-07-06Merge branch 'master' of https://github.com/dzamlo/rust into fix-nightliesAlex Crichton-2/+6
2016-07-06Auto merge of #34644 - infinity0:master, r=alexcrichtonbors-2/+0
Avoid redundant downloads when bootstrapping If the local file is available, then verify it against the hash we just downloaded, and if it matches then we don't need to download it again.
2016-07-05Use lazy range in gdb pretty printersLoïc Damien-2/+6
2016-07-05Auto merge of #34412 - gnzlbg:document_platform_intrinsics_generate, ↵bors-13/+110
r=alexcrichton Add x86 intrinsics for bit manipulation (BMI 1.0, BMI 2.0, and TBM). This PR adds the LLVM x86 intrinsics for the bit manipulation instruction sets (BMI 1.0, BMI 2.0, and TBM). The objective of this pull-request is to allow building a library that implements all the algorithms offered by those instruction sets, using compiler intrinsics for the targets that support them (by means of `target_feature`). The target features added are: - `bmi`: Bit Manipulation Instruction Set 1.0, available in Intel >= Haswell and AMD's >= Jaguar/Piledriver, - `bmi2`: Bit Manipulation Instruction Set 2.0, available in Intel >= Haswell and AMD's >= Excavator, - `tbm`: Trailing Bit Manipulation, available only in AMD's Piledriver (won't be available in newer CPUs). The intrinsics added are: - BMI 1.0: - `bextr`: Bit field extract (with register). - BMI 2.0: - `bzhi`: Zero high bits starting with specified bit position. - `pdep`: Parallel bits deposit. - `pext`: Parallel bits extract. - TBM: - `bextri`: Bit field extract (with immediate).
2016-07-04Auto merge of #34646 - michaelwoerister:warn-blacklisted-lldb, r=alexcrichtonbors-0/+11
Make rust-lldb warn about unsupported versions of LLDB r? @alexcrichton
2016-07-04Make rust-lldb warn about unsupported versions of LLDBMichael Woerister-0/+11
2016-07-04Auto merge of #34639 - dzamlo:master, r=michaelwoeristerbors-7/+2
Use lazy iterator in vec/slice gdb pretty printers
2016-07-04Use lazy iterator in vec/slice gdb pretty printersLoïc Damien-7/+2
2016-07-04Avoid redundant downloads when bootstrappingXimin Luo-2/+0
If the local file is available, then verify it against the hash we just downloaded, and if it matches then we don't need to download it again.
2016-07-04Added a pretty printer for &mut slicesNikhil Shagrithaya-1/+1
2016-07-01Update Unicode tables to 9.0Josh Stone-1/+1
2016-06-23Auto merge of #34055 - brson:cmake, r=alexcrichtonbors-1/+7
Convert makefiles to build LLVM/compiler-rt with CMake This is certainly buggy, but I have successfully built on x86_64-unknown-linux-gnu and x86_64-pc-windows-gnu. I haven't built successfully on mac yet, and I've seen mysterious test failures on Linux, but I'm interested in throwing this at the bots to see what they think.
2016-06-22Add target_features for the bit manipulation instruction sets: BMI 1.0, BMI ↵gnzlbg-1/+0
2.0, and TBM.
2016-06-22Add intrinsics for x86 bit manipulation instruction sets: BMI 1.0, BMI 2.0, ↵gnzlbg-0/+53
and TBM.
2016-06-22Allow different instruction set prefixes within the same architecturegnzlbg-13/+37
2016-06-22Add usage examples to the documentation of etc/platform-intrinsics/generator.pygnzlbg-0/+21
2016-06-21Convert makefiles to build LLVM/compiler-rt with CMakeBrian Anderson-1/+7
2016-06-20Run debuginfo tests on TravisSeo Sanghyeon-1/+3
2016-06-03Use Docker for TravisSeo Sanghyeon-0/+25
2016-05-31Auto merge of #33141 - tshepang:python-love, r=brsonbors-8/+4
some Python nits and fixes
2016-05-31mk: Prepare for a new stage0 compilerAlex Crichton-2/+3
This commit prepares the source for a new stage0 compiler, the 1.10.0 beta compiler. These artifacts are hot off the bots and should be ready to go.
2016-05-30print enum variant fields in docsOliver Schneider-0/+1
2016-05-23Auto merge of #33098 - raphlinus:master, r=alexcrichtonbors-4/+134
Efficient trie lookup for boolean Unicode properties Replace binary search of ranges with trie lookup using leaves of 64-bit bitmap chunks. Benchmarks suggest this is approximately 10x faster than the bsearch approach.
2016-05-15Auto merge of #33612 - royalstream:royalstream-enc-enum-ptr, r=michaelwoeristerbors-0/+2
gdb Pretty Print: generic encoded was failing on reference/pointer types If you debug this program using **gdb** ```rust fn main() { let x = 10; let y = Some(&x); // additional code } ``` And you try to print **y**'s value from the debugger, you get the following: ``` (gdb) print y Python Exception <class 'gdb.error'> Cannot convert value to int.: $1 = {RUST$ENCODED$ENUM$0$None = Some = {0x7fff5fbff97c}} ``` What happens is that inside **debugger_pretty_printers_common.py** the method `is_null_variant` doesn't have any special handling for pointer values so it ends up calling `.as_integer()` on `discriminant_val` (which holds a pointer) and fails. Considering it needs to handle pointers and return _true_ when the pointer is _null_, I modified the `.as_integer()` method in **gdb_rust_pretty_printing.py** to take pointers into consideration. After this modification **gdb** prints **y** like this: ``` (gdb) print y $1 = Some = {0x7fff5fbff97c} ``` Now, it would be nice to print something useful (instead of a pointer address) but the pretty printer doesn't currently handle references/pointers so that's a completely different subject.
2016-05-12Generic encoded enums no longer crash on reference/pointer typesSteven Burns-0/+2
2016-05-10Copy more libraries from local Rust to stage0Anton Blanchard-0/+8
When bootstrapping Rust using a previously built toolchain, I noticed a number of libraries were not copied in. As a result the copied in rustc fails to execute because it can't find all its dependences. Add them into the local_stage0.sh script.
2016-04-28test: Move run-make tests into compiletestAlex Crichton-96/+0
Forcing them to be embedded in makefiles precludes being able to run them in rustbuild, and adding them to compiletest gives us a great way to leverage future enhancements to our "all encompassing test suite runner" as well as just moving more things into Rust. All tests are still Makefile-based in the sense that they rely on `make` being available to run them, but there's no longer any Makefile-trickery to run them and rustbuild can now run them out of the box as well.
2016-04-26some Python nits and fixesTshepang Lekhonkhobe-8/+4
2016-04-24Fix keyword parsing testsVadim Petrochenkov-3/+5
2016-04-23Auto merge of #33153 - mitaa:rdoc-dejavu, r=alexcrichtonbors-3/+6
rustdoc: Only record the same impl once Due to inlining it is possible to visit the same module multiple times during `<Cache as DocFolder>::fold_crate`, so we keep track of the modules we've already visited. fixes #33054 r? @alexcrichton
2016-04-23Auto merge of #33084 - alexcrichton:osx-python-sanity, r=michaelwoeristerbors-0/+1
Sanity check Python on OSX for LLDB tests Two primary changes: * Don't get past the configure stage if `python` isn't coming from `/usr/bin` * Call `debugger.Terminate()` to prevent segfaults on newer versions of LLDB. Closes #32994
2016-04-22Only record the same impl oncemitaa-3/+6
Due to inlining it is possible to visit the same module multiple times during `<Cache as DocFolder>::fold_crate`, so we keep track of the modules we've already visited.
2016-04-20Add comment, reduce storage requirementsRaph Levien-6/+33
Adds a comment which explains the trie structure, and also does a little arithmetic on lookup (no measurable impact, looks like modern CPUs do this arithmetic in parallel with the memory lookup to find the node) to save a bit of space. As a result, the memory impact of the compiled tables is within a couple hundred bytes of the old bsearch-range structure.
2016-04-19Fix wrong shift in trie_lookup_range_tableRaph Levien-1/+1
Somehow got in my head that >> 8 was the right shift for a chunk of 64. Oops, sorry.
2016-04-19Efficient trie lookup for boolean Unicode propertiesRaph Levien-4/+107
Replace binary search of ranges with trie lookup using leaves of 64-bit bitmap chunks. Benchmarks suggest this is approximately 10x faster than the bsearch approach.
2016-04-19mk: Bootstrap from stable instead of snapshotsAlex Crichton-507/+51
This commit removes all infrastructure from the repository for our so-called snapshots to instead bootstrap the compiler from stable releases. Bootstrapping from a previously stable release is a long-desired feature of distros because they're not fans of downloading binary stage0 blobs from us. Additionally, this makes our own CI easier as we can decommission all of the snapshot builders and start having a regular cadence to when we update the stage0 compiler. A new `src/etc/get-stage0.py` script was added which shares some code with `src/bootstrap/bootstrap.py` to read a new file, `src/stage0.txt`, which lists the current stage0 compiler as well as cargo that we bootstrap from. This script will download the relevant `rustc` package an unpack it into `$target/stage0` as we do today. One problem of bootstrapping from stable releases is that we're not able to compile unstable code (e.g. all the `#![feature]` directives in libcore/libstd). To overcome this we employ two strategies: * The bootstrap key of the previous compiler is hardcoded into `src/stage0.txt` (enabled as a result of #32731) and exported by the build system. This enables nightly features in the compiler we download. * The standard library and compiler are pinned to a specific stage0, which doesn't change, so we're guaranteed that we'll continue compiling as we start from a known fixed source. The process for making a release will also need to be tweaked now to continue to cadence of bootstrapping from the previous release. This process looks like: 1. Merge `beta` to `stable` 2. Produce a new stable compiler. 3. Change `master` to bootstrap from this new stable compiler. 4. Merge `master` to `beta` 5. Produce a new beta compiler 6. Change `master` to bootstrap from this new beta compiler. Step 3 above should involve very few changes as `master` was previously bootstrapping from `beta` which is the same as `stable` at that point in time. Step 6, however, is where we benefit from removing lots of `#[cfg(stage0)]` and get to use new features. This also shouldn't slow the release too much as steps 1-5 requires little work other than waiting and step 6 just needs to happen at some point during a release cycle, it's not time sensitive. Closes #29555 Closes #29557
2016-04-19etc: Add debugger.Terminate() to lldb_batchmode.pyAlex Crichton-0/+1
Right now on the most recent version of LLDB installed on OSX we'll segfault on all the LLDB tests if this isn't called (unfortunately). Hopefully we've updated LLDB on the bots to actually get this working everywhere! Closes #32994
2016-04-12rustbuild: Migrate tidy checks to RustAlex Crichton-693/+0
This commit rewrites all of the tidy checks we have, namely: * featureck * errorck * tidy * binaries into Rust under a new `tidy` tool inside of the `src/tools` directory. This at the same time deletes all the corresponding Python tidy checks so we can be sure to only have one source of truth for all the tidy checks. cc #31590
2016-04-01Auto merge of #32544 - alexcrichton:rustbuild-dist-libtest, r=brsonbors-0/+1
rustbuild: Fix dist for non-host targets The `rust-std` package that we produce is expected to have not only the standard library but also libtest for compiling unit tests. Unfortunately this does not currently happen due to the way rustbuild is structured. There are currently two main stages of compilation in rustbuild, one for the standard library and one for the compiler. This is primarily done to allow us to fill in the sysroot right after the standard library has finished compiling to continue compiling the rest of the crates. Consequently the entire compiler does not have to explicitly depend on the standard library, and this also should allow us to pull in crates.io dependencies into the build in the future because they'll just naturally build against the std we just produced. These phases, however, do not represent a cross-compiled build. Target-only builds also require libtest, and libtest is currently part of the all-encompassing "compiler build". There's unfortunately no way to learn about just libtest and its dependencies (in a great and robust fashion) so to ensure that we can copy the right artifacts over this commit introduces a new build step, libtest. The new libtest build step has documentation, dist, and link steps as std/rustc already do. The compiler now depends on libtest instead of libstd, and all compiler crates can now assume that test and its dependencies are implicitly part of the sysroot (hence explicit dependencies being removed). This makes the build a tad less parallel as in theory many rustc crates can be compiled in parallel with libtest, but this likely isn't where we really need parallelism either (all the time is still spent in the compiler). All in all this allows the `dist-std` step to depend on both libstd and libtest, so `rust-std` packages produced by rustbuild should start having both the standard library and libtest. Closes #32523