-
Notifications
You must be signed in to change notification settings - Fork 12.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rollup of 11 pull requests #33582
Rollup of 11 pull requests #33582
Commits on May 10, 2016
-
Configuration menu - View commit details
-
Copy full SHA for df572fc - Browse repository at this point
Copy the full SHA df572fcView commit details -
Configuration menu - View commit details
-
Copy full SHA for 417fe6d - Browse repository at this point
Copy the full SHA 417fe6dView commit details -
Configuration menu - View commit details
-
Copy full SHA for eed8d70 - Browse repository at this point
Copy the full SHA eed8d70View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8d5c578 - Browse repository at this point
Copy the full SHA 8d5c578View commit details -
Copy more libraries from local Rust to stage0
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.
Configuration menu - View commit details
-
Copy full SHA for 0a38089 - Browse repository at this point
Copy the full SHA 0a38089View commit details -
Configuration menu - View commit details
-
Copy full SHA for 946efcd - Browse repository at this point
Copy the full SHA 946efcdView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3927ff4 - Browse repository at this point
Copy the full SHA 3927ff4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 33978b0 - Browse repository at this point
Copy the full SHA 33978b0View commit details -
Configuration menu - View commit details
-
Copy full SHA for e5a91b7 - Browse repository at this point
Copy the full SHA e5a91b7View commit details
Commits on May 11, 2016
-
Don't use env::current_exe with libbacktrace
If the path we give to libbacktrace doesn't actually correspond to the current process, libbacktrace will segfault *at best*. cc rust-lang#21889
Configuration menu - View commit details
-
Copy full SHA for 9c2e691 - Browse repository at this point
Copy the full SHA 9c2e691View commit details -
Only break critical edges where actually needed
Currently, to prepare for MIR trans, we break _all_ critical edges, although we only actually need to do this for edges originating from a call that gets translated to an invoke instruction in LLVM. This has the unfortunate effect of undoing a bunch of the things that SimplifyCfg has done. A particularly bad case arises when you have a C-like enum with N variants and a derived PartialEq implementation. In that case, the match on the (&lhs, &rhs) tuple gets translated into nested matches with N arms each and a basic block each, resulting in N² basic blocks. SimplifyCfg reduces that to roughly 2*N basic blocks, but breaking the critical edges means that we go back to N². In nickel.rs, there is such an enum with roughly N=800. So we get about 640K basic blocks or 2.5M lines of LLVM IR. LLVM takes a while to reduce that to the final "disr_a == disr_b". So before this patch, we had 2.5M lines of IR with 640K basic blocks, which took about about 3.6s in LLVM to get optimized and translated. After this patch, we get about 650K lines with about 1.6K basic blocks and spent a little less than 0.2s in LLVM. cc rust-lang#33111
Configuration menu - View commit details
-
Copy full SHA for 00f6513 - Browse repository at this point
Copy the full SHA 00f6513View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1ebb07e - Browse repository at this point
Copy the full SHA 1ebb07eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 5541fdf - Browse repository at this point
Copy the full SHA 5541fdfView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4e5a2e0 - Browse repository at this point
Copy the full SHA 4e5a2e0View commit details -
Configuration menu - View commit details
-
Copy full SHA for c91b104 - Browse repository at this point
Copy the full SHA c91b104View commit details -
[MIR trans] Optimize trans for biased switches
Currently, all switches in MIR are exhausitive, meaning that we can have a lot of arms that all go to the same basic block, the extreme case being an if-let expression which results in just 2 possible cases, be might end up with hundreds of arms for large enums. To improve this situation and give LLVM less code to chew on, we can detect whether there's a pre-dominant target basic block in a switch and then promote this to be the default target, not translating the corresponding arms at all. In combination with rust-lang#33544 this makes unoptimized MIR trans of nickel.rs as fast as using old trans and greatly improves the times for optimized builds, which are only 30-40% slower instead of ~300%. cc rust-lang#33111
Configuration menu - View commit details
-
Copy full SHA for 49b2cdf - Browse repository at this point
Copy the full SHA 49b2cdfView commit details
Commits on May 12, 2016
-
Rollup merge of rust-lang#33531 - antonblanchard:local_stage0_fix, r=…
…alexcrichton Copy more libraries from local Rust to stage0 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.
Configuration menu - View commit details
-
Copy full SHA for 52e3d1e - Browse repository at this point
Copy the full SHA 52e3d1eView commit details -
Rollup merge of rust-lang#33532 - jseyfried:mutable_lowering_context,…
… r=nrc Clean up `hir::lowering` Clean up `hir::lowering`: - give lowering functions mutable access to the lowering context - refactor the `lower_*` functions and other functions that take a lowering context into methods - simplify the API that `hir::lowering` exposes to `driver` - other miscellaneous cleanups r? @nrc
Configuration menu - View commit details
-
Copy full SHA for b2b1516 - Browse repository at this point
Copy the full SHA b2b1516View commit details -
Rollup merge of rust-lang#33541 - eddyb:promote-only-temps, r=arielb1
mir: don't attempt to promote Unpromotable constant temps. Fixes rust-lang#33537. This was a non-problem in regular functions, but we also promote in `const fn`s. There we always qualify temps so you can't depend on `Unpromotable` temps being `NOT_CONST`.
Configuration menu - View commit details
-
Copy full SHA for 0d8101a - Browse repository at this point
Copy the full SHA 0d8101aView commit details -
Rollup merge of rust-lang#33544 - dotdash:baby_dont_break_me_no_more,…
… r=Aatch Only break critical edges where actually needed Currently, to prepare for MIR trans, we break _all_ critical edges, although we only actually need to do this for edges originating from a call that gets translated to an invoke instruction in LLVM. This has the unfortunate effect of undoing a bunch of the things that SimplifyCfg has done. A particularly bad case arises when you have a C-like enum with N variants and a derived PartialEq implementation. In that case, the match on the (&lhs, &rhs) tuple gets translated into nested matches with N arms each and a basic block each, resulting in N² basic blocks. SimplifyCfg reduces that to roughly 2*N basic blocks, but breaking the critical edges means that we go back to N². In nickel.rs, there is such an enum with roughly N=800. So we get about 640K basic blocks or 2.5M lines of LLVM IR. LLVM takes a while to reduce that to the final "disr_a == disr_b". So before this patch, we had 2.5M lines of IR with 640K basic blocks, which took about about 3.6s in LLVM to get optimized and translated. After this patch, we get about 650K lines with about 1.6K basic blocks and spent a little less than 0.2s in LLVM. cc rust-lang#33111 r? @Aatch
Configuration menu - View commit details
-
Copy full SHA for 1954c83 - Browse repository at this point
Copy the full SHA 1954c83View commit details -
Rollup merge of rust-lang#33552 - dotdash:scfg, r=luqmana
[MIR] Enhance the SimplifyCfg pass to merge consecutive blocks Updated from rust-lang#30238, including the changes suggested by @Aatch.
Configuration menu - View commit details
-
Copy full SHA for 3c8aa6e - Browse repository at this point
Copy the full SHA 3c8aa6eView commit details -
Rollup merge of rust-lang#33554 - sfackler:no-current-exe, r=alexcric…
…hton Don't use env::current_exe with libbacktrace If the path we give to libbacktrace doesn't actually correspond to the current process, libbacktrace will segfault *at best*. cc rust-lang#21889 r? @alexcrichton cc @semarie
Configuration menu - View commit details
-
Copy full SHA for b4e4e84 - Browse repository at this point
Copy the full SHA b4e4e84View commit details -
Rollup merge of rust-lang#33555 - soltanmm:ambiguous-nixon, r=nikomat…
…sakis Remove unification despite ambiguity in projection Turns out that closures aren't explicitly considered in `project.rs`, so the ambiguity handling w.r.t. closures can just be removed as the change done in `select.rs` covers it. r? @nikomatsakis
Configuration menu - View commit details
-
Copy full SHA for 9812b71 - Browse repository at this point
Copy the full SHA 9812b71View commit details -
Rollup merge of rust-lang#33560 - eddyb:symtidy, r=alexcrichton
Use symlink_metadata in tidy to avoid panicking on broken symlinks. r? @alexcrichton
Configuration menu - View commit details
-
Copy full SHA for b171856 - Browse repository at this point
Copy the full SHA b171856View commit details -
Rollup merge of rust-lang#33563 - Amanieu:oncestate, r=alexcrichton
Export OnceState from libstd This type is used in the signature of `call_once_force` but isn't exported from libstd. r? @alexcrichton
Configuration menu - View commit details
-
Copy full SHA for 5203448 - Browse repository at this point
Copy the full SHA 5203448View commit details -
Rollup merge of rust-lang#33566 - dotdash:biased_switch, r=nagisa
[MIR trans] Optimize trans for biased switches Currently, all switches in MIR are exhausitive, meaning that we can have a lot of arms that all go to the same basic block, the extreme case being an if-let expression which results in just 2 possible cases, be might end up with hundreds of arms for large enums. To improve this situation and give LLVM less code to chew on, we can detect whether there's a pre-dominant target basic block in a switch and then promote this to be the default target, not translating the corresponding arms at all. In combination with rust-lang#33544 this makes unoptimized MIR trans of nickel.rs as fast as using old trans and greatly improves the times for optimized builds, which are only 30-40% slower instead of ~300%. cc rust-lang#33111
Configuration menu - View commit details
-
Copy full SHA for 32e6cbb - Browse repository at this point
Copy the full SHA 32e6cbbView commit details