| Age | Commit message (Collapse) | Author | Lines |
|
|
|
When the inliner has to decided if it wants to inline a function A into an
internal function B, it first checks whether it would be more profitable
to inline B into its callees instead. This means that it has to analyze
B, which involves checking the assumption cache. Building the assumption
cache requires scanning the whole function, and because inlining
currently clears the assumption cache, this scan happens again and
again, getting even slower as the function grows from inlining.
As inlining the huge find functions isn't really useful anyway, we can
mark them as noinline, which skips the cost analysis and reduces compile
times by as much as 70%.
cc #28273
|
|
When the inliner has to decided if it wants to inline a function A into an
internal function B, it first checks whether it would be more profitable
to inline B into its callees instead. This means that it has to analyze
B, which involves checking the assumption cache. Building the assumption
cache requires scanning the whole function, and because inlining
currently clears the assumption cache, this scan happens again and
again, getting even slower as the function grows from inlining.
As inlining the huge find functions isn't really useful anyway, we can
mark them as noinline, which skips the cost analysis and reduces compile
times by as much as 70%.
cc #28273
|
|
llvm seems to be having some trouble optimizing the iterator-based string comparsion method into some equivalent to memcmp. This explicitly calls out to the memcmp intrinisic in order to allow llvm to generate better code. In some manual benchmarking, this memcmp-based approach is 20 times faster than the iterator approach.
|
|
|
|
r? @pnkfelix
|
|
|
|
|
|
|
|
|
|
r? @Manishearth
|
|
|
|
Closes #17994.
|
|
|
|
llvm seems to be having some trouble optimizing the iterator-based
string comparsion method into some equivalent to memcmp. This
explicitly calls out to the memcmp intrinisic in order to allow
llvm to generate better code. In some manual benchmarking, this
memcmp-based approach is 20 times faster than the iterator approach.
|
|
under OpenBSD, it could be have present multiples versions of gcc compiler:
- gcc-4.2 (with patchs) : c/c++ compiler present in `/usr/bin`. It is unusable to build recent LLVM (so rustc too).
- gcc/g++ -4.9 : c/c++ compiler, installed as third-party with "ports" mechanism. The compiler is installed in `/usr/local` as `egcc` (and `eg++`).
this PR adds probing for `egcc` for `CFG_GCC`, if the first probed `gcc` is too old. It will set `CC` and `CXX` too, in order to pass the variables to LLVM configure if builded.
please note this PR is a first step in order to build rustc under OpenBSD with unpatched tree.
r? @alexcrichton
cc @brson @dhuseby
|
|
Fixes #27616.
r? @pnkfelix
|
|
This halves the backtrace length. The definition site wasn't very useful
anyways, since it may be invalid (for compiler expansions) or located in
another crate. Since the macro name is still printed, grepping for it is
still an easy way of finding the definition.
|
|
Closes #17994.
|
|
r=steveklabnik
This was @steveklabnik's idea. Thanks @BurntSushi for the awesome blog post!
r? @steveklabnik
|
|
|
|
Fix the following error when running configure with llvm 3.8svn:
configure: error: bad LLVM version: 3.8.0svn, need >=3.5
|
|
depending of the compiler used, jemalloc configure don't detect
correctly some parameters.
|
|
case study.
|
|
Closes #22638.
Closes #22872.
Closes #23024.
Closes #23046.
|
|
Closes #22638.
Closes #22872.
Closes #23024.
Closes #23046.
|
|
|
|
|
|
Escape `{` in format strings as `{{`, instead of using a substitution
|
|
if default CFG_GCC is too old, probe also egcc (which is gcc from
ports).
set CC/CXX too, in order to pass them to LLVM
|
|
r? @steveklabnik
|
|
NFC.
|
|
|
|
|
|
|
|
r? @steveklabnik
The phrase 'academic research' rubs me the wrong way. I have some concern about the role of this page and think it could be expanded to more than just academic papers and cleaned up a lot.
|
|
current usage.
NFC.
|
|
I took a stab at fixing #28064. Not sure if this all-features-in-one-example approach is the right one. Also I completely made up the terms "star globbing" and "brace expansion globbing" -- they are just called "glob-like syntax" in the reference.
|
|
|
|
fn. Fixes #27616.
|
|
|
|
Closes #17001
Closes #21449
Closes #22992
Closes #23208
Closes #23442
|
|
Follow-up fix for PR #28283.
|
|
|
|
|
|
- Successful merges: #28281, #28283, #28289, #28294, #28295, #28305
- Failed merges:
|
|
|
|
|
|
Thanks Eric, reported via email
|
|
The link address is defined below the paragraph so no need to have it inline.
|