- 17 7月, 2013 1 次提交
-
-
由 Josh Matthews 提交于
-
- 16 7月, 2013 1 次提交
-
-
由 Daniel Micay 提交于
-
- 15 7月, 2013 4 次提交
-
-
由 Alex Crichton 提交于
If the TLS key is 0-sized, then the linux linker is apparently smart enough to put everything at the same pointer. OSX on the other hand, will reserve some space for all of them. To get around this, the TLS key now actuall consumes space to ensure that it gets a unique pointer
-
由 Alex Crichton 提交于
Closes #3273
-
由 Alex Crichton 提交于
-
由 Alex Crichton 提交于
I think of this as a stylistic opinion which shouldn't necessarily be enforced by default on all users of rust, but that's just my opinion.
-
- 14 7月, 2013 2 次提交
-
-
由 Alex Crichton 提交于
-
由 Björn Steinbrink 提交于
We used to have concrete types in glue functions, but the way we used to implement that broke inlining of those functions. To fix that, we converted all glue to just take an i8* and always casted to that type. The problem with the old implementation was that we made a wrong assumption about the glue functions, taking it for granted that they always take an i8*, because that's the function type expected by the TyDesc fields. Therefore, we always ended up with some kind of cast. But actually, we can initially have the glue with concrete types and only cast the functions to the generic type once we actually emit the TyDesc data. That means that for glue calls that can be statically resolved, we don't need any casts, unless the glue uses a simplified type. In that case we cast the argument. And for glue calls that are resolved at runtime, we cast the argument to i8*, because that's what the glue function in the TyDesc expects. Since most of out glue calls are static, this saves a lot of bitcasts. The size of the unoptimized librustc.ll goes down by 240k lines.
-
- 13 7月, 2013 5 次提交
-
-
由 Björn Steinbrink 提交于
If an "if" expression has no "else", we don't have to create an LLVM basic block either.
-
由 Björn Steinbrink 提交于
When there are no allocas, we don't need a block for them.
-
由 Björn Steinbrink 提交于
Currently, we always create a dedicated "return" basic block, but when there's only a single predecessor for that block, it can be merged with that predecessor. We can achieve that merge by only creating the return block on demand, avoiding its creation when its not required. Reduces the pre-optimization size of librustc.ll created with --passes "" by about 90k lines which equals about 4%.
-
由 Alex Crichton 提交于
This prevents attempting to run deallocated code (which is no longer present always)
-
由 Alex Crichton 提交于
-
- 12 7月, 2013 16 次提交
-
-
由 Alex Crichton 提交于
Also ends up fixing one case in libstd
-
由 Michael Sullivan 提交于
-
由 Michael Sullivan 提交于
-
由 Michael Sullivan 提交于
-
由 Michael Sullivan 提交于
-
由 Michael Sullivan 提交于
-
由 Michael Sullivan 提交于
-
由 Michael Sullivan 提交于
Also reworks a bunch of type_use to make things work for default static methods soon.
-
由 Michael Sullivan 提交于
-
由 Michael Sullivan 提交于
-
由 Niko Matsakis 提交于
-
由 Niko Matsakis 提交于
-
由 Niko Matsakis 提交于
-
由 Niko Matsakis 提交于
-
由 Niko Matsakis 提交于
-
由 Björn Steinbrink 提交于
Currently, immediate values are copied into an alloca only to have an addressable storage so that it can be used with memcpy. Obviously we can skip the memcpy in this case.
-
- 11 7月, 2013 5 次提交
-
-
由 Alex Crichton 提交于
Closes #6004
-
由 Brendan Cully 提交于
-
由 Brendan Cully 提交于
-
由 Brendan Cully 提交于
-
由 Niko Matsakis 提交于
-
- 10 7月, 2013 5 次提交
-
-
由 Seo Sanghyeon 提交于
-
由 Seo Sanghyeon 提交于
-
由 Alex Crichton 提交于
-
由 Alex Crichton 提交于
-
由 Daniel Micay 提交于
`malloc` already returns memory correctly aligned for every possible type in standard C, and that's enough for all types in Rust too
-
- 09 7月, 2013 1 次提交
-
-
由 Niko Matsakis 提交于
be limited by the innermost repeating scope. Fixes #7336.
-