Graydon Hoare
3c4ce79518
rustc: Switch ty::node_type_table to smallintmap, cut 400mb memory use off a librustc build.
...
Smallintmap was being populated with sparse keys during ast deserialization.
2013-05-27 19:50:49 -07:00
Tom Lee
b7f71e1ee6
Implementing suggestions from @nikomatsakis
2013-05-27 19:34:25 -07:00
bors
2061ce9aff
auto merge of #6741 : pcwalton/rust/intra-crate-start, r=graydon
...
r? @brson
2013-05-27 18:26:04 -07:00
Tom Lee
67283eaad2
Omit unused implicit argument if return type is immediate.
2013-05-27 17:13:01 -07:00
bors
dbc57584bd
auto merge of #6724 : thestinger/rust/swap_fast, r=thestinger
...
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
}
```
2013-05-27 15:56:08 -07:00
bors
5d04ee805b
auto merge of #6715 : Xazax-hun/rust/incoming, r=graydon
...
Preliminary implementation for: https://github.com/mozilla/rust/issues/6275
This is my first (non hello world) rust code, so it may not be idiomatic.
2013-05-27 13:44:08 -07:00
bors
b0f3686515
auto merge of #6703 : sanxiyn/rust/allocation-lint, r=sanxiyn
...
Fix #6145 . In particular, handle operator overloading.
2013-05-27 12:38:12 -07:00
Seo Sanghyeon
8f80323f09
Remove unnecessary allocations flagged by lint
2013-05-28 03:14:44 +09:00
Seo Sanghyeon
363e672736
Use adjustments table for allocation lint
2013-05-28 03:12:13 +09:00
gareth
76c31217be
Refactor core::run in order to address many of the issues
...
mentioned in #2625 .
This change makes the module more oriented around
Process values instead of having to deal with process ids
directly.
Apart from issues mentioned in #2625 , other changes include:
- Changing the naming to be more consistent - Process/process
is now used instead of a mixture of Program/program and
Process/process.
- More docs/tests.
Some io/scheduler related issues remain (mentioned in #2625 ).
2013-05-27 13:50:33 +01:00
bors
d577eafff3
auto merge of #6688 : graydon/rust/issue-3396-mystery-bug-in-metadata, r=Aatch
...
Whatever it was, it is no longer a problem here.
2013-05-27 04:38:04 -07:00
bors
fa67e091e4
auto merge of #6719 : kud1ing/rust/rustc_w, r=bstrie
...
Fixes #6697
2013-05-26 22:26:06 -07:00
Daniel Micay
c302010ef0
mark unique pointer parameters as noalias
...
Closes #6749
2013-05-26 14:11:30 -04:00
Daniel Micay
58d6864ad7
add an align parameter to call_memcpy
2013-05-26 10:26:04 -04:00
Daniel Micay
d9c0f0f188
add memset32/memset64
2013-05-26 10:26:03 -04:00
Daniel Micay
cf8e9f9aec
make the memcpy/memmove intrinsics higher-level
...
This allows them to make use of the type's alignment, instead of being
pessimistic and assuming it is only 1.
2013-05-26 10:26:03 -04:00
James Miller
2c2346e3d4
Mark &mut parameters as noalias
2013-05-26 17:40:07 +12:00
Patrick Walton
cf34f9f9a9
librustc: Allow intra-crate start functions, for runtimeless operation.
2013-05-25 18:20:33 -07:00
Alex Crichton
ac6c15aece
Actually filter view_items in blocks
2013-05-24 17:31:15 -05:00
Lenny222
1009c21ad7
show options for -W help and -W
2013-05-24 21:32:30 +02:00
Gábor Horváth
3d61931fca
Only trigger missing documentation warnings to public functions and fields.
2013-05-24 14:13:41 +02:00
Gábor Horváth
c6581325ac
Warnings for missing documentations.
2013-05-24 10:27:31 +02:00
bors
ed9a793d24
auto merge of #6706 : brson/rust/glue, r=catamorphism
...
Instead of `glue_drop1234` it's `Type::<hash>::glue_drop1234`
Haven't done any performance testing.
2013-05-23 23:13:46 -07:00
bors
212d6a2f61
auto merge of #6710 : thestinger/rust/swap, r=catamorphism
2013-05-23 22:04:40 -07:00
Daniel Micay
a7f450ab22
indentation fix
2013-05-23 22:32:33 -04:00
Daniel Micay
7d2f836065
add memcpy intrinsic to mirror memmove
2013-05-23 22:29:30 -04:00
bors
a776d65b4d
auto merge of #6690 : erickt/rust/cleanup-warnings, r=brson
...
Simple patch series to fix up all the warnings a rustc compile is giving at the moment. It also fixes a NOTE in `to_bytes.rs` to remove the `to_bytes::iter_bytes_<N>` functions.
2013-05-23 18:10:36 -07:00
Erick Tryzelaar
9635b30837
cleanup warnings from librustc
2013-05-23 17:57:07 -07:00
Erick Tryzelaar
1965d72957
core: remove iter_bytes helper functions
2013-05-23 17:48:16 -07:00
Brian Anderson
7f642f3d85
rustc: Give glue symbols meaningful names
...
Instead of `glue_drop1234` it's `Type::<hash>::glue_drop1234`
Haven't done any performance testing.
2013-05-23 17:01:45 -07:00
Brian Anderson
d213443a67
rustc: Check for null before dropping ~objects. #5192
2013-05-23 15:33:34 -07:00
Patrick Walton
18fca3e2e5
librustc: Add some missing use core::prelude::*;
in the test cases
2013-05-22 21:57:12 -07:00
Patrick Walton
18df18c817
libstd: Fix merge fallout.
2013-05-22 21:57:11 -07:00
Patrick Walton
c10e0cb9c9
syntax: Change syntax extensions to expand to std::foo
instead of core::foo
2013-05-22 21:57:08 -07:00
Patrick Walton
d5055f4e97
librustc: Make std_inject
inject the name std
, not core
2013-05-22 21:57:08 -07:00
Patrick Walton
c532e033c9
librustc: Change std
to extra
throughout libsyntax and librustc
2013-05-22 21:57:08 -07:00
Patrick Walton
f3723cf7c4
libextra: Rename the actual metadata names of libcore to libstd and libstd to libextra
2013-05-22 21:57:07 -07:00
Patrick Walton
ebfc2b8e56
librustc: Rename core injection to std injection
2013-05-22 21:57:05 -07:00
Patrick Walton
565942b145
librustc: Fix privacy checking for cross-crate variants
2013-05-22 21:57:03 -07:00
Patrick Walton
211d038abc
librustc: Make ~Trait
two words by storing the type descriptor in the vtable.
2013-05-22 21:57:03 -07:00
Patrick Walton
08e561ae70
librustc: Disable borrow check debugging even when rustc is compiled with -O0.
...
This improves -O0 compile times dramatically.
2013-05-22 21:57:02 -07:00
Patrick Walton
ca9bb2d9ac
librustc: Disallow use
from reaching into impls or traits.
...
This can perhaps be restored in the future. For now this is a precursor to
making typedefs work as expected.
2013-05-22 21:57:02 -07:00
bors
1d3e84c5d6
auto merge of #6669 : yjh0502/rust/fix_6209, r=graydon
...
Fix issue #6209 , and some related issues about constant expression
- unmatched type between arms
- unmatched type in range
2013-05-22 18:01:36 -07:00
Graydon Hoare
ee1b419818
revert no-longer-required workaround for mystery bug, close #3396
2013-05-22 15:35:25 -07:00
Corey Richardson
e64339645b
Implement static_assert attribute
...
This verifies that a static item evaluates to true, at compile time.
2013-05-22 13:13:24 -04:00
Jihyun Yu
f8af2b50ee
fix issue #6209
2013-05-22 14:06:25 +09:00
Tim Chevalier
8c68c4a52c
rustc: Don't generate code for unreachable expressions
...
The way we deal with unreachable expressions in trans is pretty ad hoc,
but this at least doesn't make it worse, and eliminates the LLVM
assertion failure reported in #5741 .
2013-05-21 13:15:48 -07:00
bors
64963d6cba
auto merge of #6611 : huonw/rust/syntax-ext-no-dup, r=jbclements
...
Fixes https://github.com/mozilla/rust/issues/6578 by merging the 3 different ways to build an AST into a single `AstBuilder` trait, creating a more uniform and briefer interface.
Also, converts the `ext_ctxt` trait-object to be a plain struct, as well as renaming it to `ExtCtxt`.
Seems to make expansion slightly faster for the normal case (e.g. `libcore` and `libstd`), but slower for `librustc` (slightly) and `libsyntax` (0.3s -> 0.8s! I'm investigating this, but I'd prefer this patch to land relatively quickly.).
`git blame` suggests maybe @graydon or @erickt are familiar with this area of the code. r?
2013-05-21 10:43:17 -07:00
Huon Wilson
4045da9f4f
syntax/ext: modernise ext_ctxt to be CamelCase and use new.
2013-05-22 00:04:10 +10:00
bors
808aada1fb
auto merge of #6654 : sanxiyn/rust/accurate-span-2, r=bstrie
2013-05-21 05:37:17 -07:00