- 29 5月, 2013 12 次提交
-
-
由 James Miller 提交于
-
由 James Miller 提交于
-
由 James Miller 提交于
-
由 James Miller 提交于
Refactor the optimization passes to explicitly use the passes. This commit just re-implements the same passes as were already being run. It also adds an option (behind `-Z`) to run the LLVM lint pass on the unoptimized IR.
-
由 bors 提交于
Fix for #6575. In the trans phase, rustc emits code for a function parameter that goes completely unused in the event the return type of the function in question happens to be an immediate. This patch modifies rustc & parts of rustrt to ensure that the vestigial parameter is no longer present in compiled code.
-
由 bors 提交于
-
由 bors 提交于
-
由 Tim Chevalier 提交于
-
由 bors 提交于
Also as a bonus this fixes #6767
-
由 Alex Crichton 提交于
-
由 bors 提交于
it can alias `&const` and `@mut`
-
由 Daniel Micay 提交于
it can alias `&const` and `@mut`
-
- 28 5月, 2013 28 次提交
-
-
由 Alex Crichton 提交于
-
由 bors 提交于
I think settings like this should be left up to the user.
-
由 Rob Hoelz 提交于
-
由 bors 提交于
RIP `alt`.
-
由 bors 提交于
This works with pandoc linked against highlighting-kate >= 0.5.3.8. It seems to just be a no-op with earlier versions, because I successfully ran this through `try`. This also fixes some consistency issues (like making `Example`/`Examples` always a header and always using three tildes).
-
由 bors 提交于
The compiler guarantees that there are no other references to a unique pointer when it's passed by-value to a function. The existence of the header and annihilator don't matter since it's not relevant to the call: > For a call to the parent function, dependencies between memory references from before or after the call and from those during the call are “irrelevant” to the noalias keyword for the arguments and return value used in that call. @graydon's tracing garbage collector stores the metadata outside of the boxes, so that won't be a problem. I'm unsure if updating the header while inside a function where it's marked as `noalias` would be a problem anyway since you never actually read or write to the header. @nikomatsakis: r?
-
由 bors 提交于
-
由 bors 提交于
r? @thestinger As called for in #4994
-
由 bors 提交于
Per the recommendation of the now-removed FIXME.
-
由 bors 提交于
Via my super-accurate timing (`/usr/bin/time -l`), I get 2431119360 => 1884430336 == ~520MB Closes #6637.
-
由 bors 提交于
Smallintmap was being populated with sparse keys during ast deserialization.
-
由 Jihyun Yu 提交于
-
由 bors 提交于
* Add a short section and an example illustrating the use of ARC. * Header for the section of Future changed to be more descriptive: "Backgrounding computations: Futures".
-
由 Alex Crichton 提交于
Shaves off ~600MB of memory while compiling rustc
-
由 Graydon Hoare 提交于
Smallintmap was being populated with sparse keys during ast deserialization.
-
由 Tom Lee 提交于
-
由 bors 提交于
r? @brson
-
由 Tim Chevalier 提交于
-
由 Tim Chevalier 提交于
-
由 Tim Chevalier 提交于
-
由 Tim Chevalier 提交于
-
由 Tom Lee 提交于
-
由 Tom Lee 提交于
-
由 Tom Lee 提交于
-
由 bors 提交于
Apple Clang uses different version numbering than "regular" clang, but it also provides the "regular" version it's based on. Update the sed pattern to pull out this "regular" version number instead of the Apple version number.
-
由 bors 提交于
Passing higher alignment values gives the optimization passes more freedom since it can copy in larger chunks. This change results in rustc outputting the same post-optimization IR as clang for swaps and most copies excluding the lack of information about padding. Code snippet: ```rust #[inline(never)] fn swap<T>(x: &mut T, y: &mut T) { util::swap(x, y); } ``` Original IR (for `int`): ```llvm define internal fastcc void @_ZN9swap_283417_a71830ca3ed2d65d3_00E(i64*, i64*) #1 { static_allocas: %2 = icmp eq i64* %0, %1 br i1 %2, label %_ZN4util9swap_283717_a71830ca3ed2d65d3_00E.exit, label %3 ; <label>:3 ; preds = %static_allocas %4 = load i64* %0, align 1 %5 = load i64* %1, align 1 store i64 %5, i64* %0, align 1 store i64 %4, i64* %1, align 1 br label %_ZN4util9swap_283717_a71830ca3ed2d65d3_00E.exit _ZN4util9swap_283717_a71830ca3ed2d65d3_00E.exit: ; preds = %3, %static_allocas ret void } ``` After #6710: ```llvm define internal fastcc void @_ZN9swap_283017_a71830ca3ed2d65d3_00E(i64* nocapture, i64* nocapture) #1 { static_allocas: %2 = load i64* %0, align 1 %3 = load i64* %1, align 1 store i64 %3, i64* %0, align 1 store i64 %2, i64* %1, align 1 ret void } ``` After this change: ```llvm define internal fastcc void @_ZN9swap_283017_a71830ca3ed2d65d3_00E(i64* nocapture, i64* nocapture) #1 { static_allocas: %2 = load i64* %0, align 8 %3 = load i64* %1, align 8 store i64 %3, i64* %0, align 8 store i64 %2, i64* %1, align 8 ret void } ``` Another example: ```rust #[inline(never)] fn set<T>(x: &mut T, y: T) { *x = y; } ``` Before, with `(int, int)` (align 1): ```llvm define internal fastcc void @_ZN8set_282517_8fa972e3f9e451983_00E({ i64, i64 }* nocapture, { i64, i64 }* nocapture) #1 { static_allocas: %2 = bitcast { i64, i64 }* %1 to i8* %3 = bitcast { i64, i64 }* %0 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %2, i64 16, i32 1, i1 false) ret void } ``` After, with `(int, int)` (align 8): ```llvm define internal fastcc void @_ZN8set_282617_8fa972e3f9e451983_00E({ i64, i64 }* nocapture, { i64, i64 }* nocapture) #1 { static_allocas: %2 = bitcast { i64, i64 }* %1 to i8* %3 = bitcast { i64, i64 }* %0 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %2, i64 16, i32 8, i1 false) ret void } ```
-
由 Daniel Micay 提交于
-
由 Lindsey Kuper 提交于
-