Patrick Walton
38572f4981
librustc: De-@mut
n_fns
in the stats
2013-12-26 15:54:35 -08:00
Patrick Walton
16828bb1dc
librustc: De-@mut
n_real_glues
2013-12-26 15:54:35 -08:00
Patrick Walton
75efa0725d
librustc: De-@mut
n_null_glues
in the stats
2013-12-26 15:54:35 -08:00
Patrick Walton
26d1394767
librustc: De-@mut
n_glues_created
in the stats
2013-12-26 15:54:35 -08:00
Patrick Walton
091bfa9cc3
librustc: De-@mut
n_static_tydescs
in the stats
2013-12-26 15:54:35 -08:00
Patrick Walton
e9b9c828b1
librustc: De-@mut
the various glues in the type descriptor info
2013-12-26 15:54:32 -08:00
Patrick Walton
abbee6decd
librustc: De-@mut
ScopeInfo
2013-12-26 15:54:32 -08:00
Patrick Walton
8728b09e78
librustc: De-@mut
ScopeInfo::landing_pad
2013-12-26 15:54:32 -08:00
Patrick Walton
7acaa73377
librustc: De-@mut
ScopeInfo::cleanup_paths
2013-12-26 15:54:32 -08:00
Patrick Walton
89a85e45c5
librustc: De-@mut
ScopeInfo::cleanups
2013-12-26 15:54:32 -08:00
Patrick Walton
8ae01fc0ae
librustc: De-@mut
the translation FunctionContext
2013-12-26 15:54:30 -08:00
Patrick Walton
7437a56f3b
librustc: De-@mut
FunctionContext::entry_bcx
2013-12-26 15:54:30 -08:00
Patrick Walton
05e57db348
librustc: De-@mut
FunctionContext::personality
2013-12-26 15:54:30 -08:00
Patrick Walton
cd5168b7cd
librustc: De-@mut
FunctionContext::llself
2013-12-26 15:54:30 -08:00
Patrick Walton
bd6a2236e1
librustc: De-@mut
FunctionContext::llreturn
2013-12-26 15:54:29 -08:00
Patrick Walton
a07cee26a4
librustc: De-@mut
FunctionContext::alloca_insert_pt
2013-12-26 15:54:29 -08:00
Patrick Walton
5b0401f0e8
librustc: De-@mut
FunctionContext::llretptr
2013-12-26 15:54:29 -08:00
Patrick Walton
d7392bd3ae
librustc: De-@mut
FunctionContext::llenv
2013-12-26 15:54:29 -08:00
Patrick Walton
82f5a380a4
librustc: De-@mut
llargs
and lllocals
in the function context
2013-12-26 15:54:28 -08:00
Patrick Walton
7ffba5c3e1
librustc: De-@mut
llupvars
in the translation crate context
2013-12-26 13:01:29 -08:00
Patrick Walton
4fe1cb1aff
librustc: De-@mut
the vtable map
2013-12-26 13:01:28 -08:00
Patrick Walton
b941677ea3
librustc: De-@mut
the crate context
2013-12-26 13:01:26 -08:00
Patrick Walton
2418cc0212
librustc: De-@mut
the crate context's do_not_commit_warning_issued
2013-12-26 13:01:26 -08:00
Patrick Walton
0e2041c54b
librustc: De-@mut
CrateContext::const_cstr_cache
.
2013-12-26 13:01:23 -08:00
Patrick Walton
c9432327c4
librustc: Change @mut Block
to @Block
.
2013-12-26 13:01:21 -08:00
Huon Wilson
17ac2aa523
std::str: replace .as_imm_buf with .as_ptr.
2013-12-19 10:18:02 +11:00
Huon Wilson
4c79b22ef2
std::vec: remove .as_imm_buf, replaced by .as_ptr & .len.
...
There's no need for the restrictions of a closure with the above methods.
2013-12-19 09:26:13 +11:00
Huon Wilson
164f7a290e
std::vec: convert to(_mut)_ptr to as_... methods on &[] and &mut [].
2013-12-15 23:37:41 +11:00
Alex Crichton
ab387a6838
Register new snapshots
2013-11-28 20:27:56 -08:00
Patrick Walton
8ceb374ab7
librustc: Remove non-procedure uses of do
from librustc, librustdoc,
...
and librustpkg.
2013-11-26 08:25:00 -08:00
Patrick Walton
7e3f20133a
librustc: Change most uses of &fn()
to ||
.
2013-11-19 13:22:03 -08:00
Jed Davis
fcfbfde0b7
Adjust reflection for the possibility of discriminants larger than int.
...
Not only can discriminants be smaller than int now, but they can be
larger than int on 32-bit targets. This has obvious implications for the
reflection interface. Without this change, things fail with LLVM
assertions when we try to "extend" i64 to i32.
2013-10-29 09:09:20 -07:00
Daniel Micay
1e4986ce56
make the bottom type immediate
...
Before:
define void @_ZN3bar19h9d9b965357abc043af4v0.0E({}* noalias nocapture readnone sret, { i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone)
After:
define void @_ZN3bar19h9d9b965357abc043af4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone)
2013-10-27 16:48:48 -04:00
Alex Crichton
daf5f5a4d1
Drop the '2' suffix from logging macros
...
Who doesn't like a massive renaming?
2013-10-22 08:09:56 -07:00
Alex Crichton
273784e9bf
Optimize include_bin! for large inputs
...
Previously an ExprLit was created *per byte* causing a huge increase in memory
bloat. This adds a new `lit_binary` to contain a literal of binary data, which
is currently only used by the include_bin! syntax extension. This massively
speeds up compilation times of the shootout-k-nucleotide-pipes test
before:
time: 469s
memory: 6GB
assertion failure in LLVM (section too large)
after:
time: 2.50s
memory: 124MB
Closes #2598
2013-10-18 09:20:08 -07:00
Luqman Aden
e88064d18f
librustc: Combine C_struct and C_packed_struct.
2013-10-12 23:19:22 -04:00
Daniel Micay
6a90e80b62
option: rewrite the API to use composition
2013-10-09 09:17:29 -04:00
Daniel Micay
ac1faba4df
make small ty_struct immediate
...
Closes #9651
2013-10-08 07:11:08 -04:00
Daniel Micay
f504461a40
make C-like enums immediate
...
This fixes two existing bugs along the way:
* The `transmute` intrinsic did not correctly handle casts of immediate
aggregates like newtype structs and tuples.
* The code for calling foreign functions used the wrong type to create
an `alloca` temporary
enum Foo { A, B }
fn foo() -> Foo { A }
Before:
; Function Attrs: nounwind uwtable
define void @_ZN3foo18hbedc642d5d9cf5aag4v0.0E(%enum.Foo* noalias nocapture sret, { i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) #0 {
"function top level":
%2 = getelementptr inbounds %enum.Foo* %0, i64 0, i32 0
store i64 0, i64* %2, align 8
ret void
}
After:
; Function Attrs: nounwind readnone uwtable
define %enum.Foo @_ZN3foo18hbedc642d5d9cf5aag4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) #0 {
"function top level":
ret %enum.Foo zeroinitializer
}
2013-10-03 06:27:00 -04:00
Daniel Micay
249b356fb3
make unit structs immediate
...
struct Foo;
fn foo() -> Foo { Foo }
Before:
; Function Attrs: nounwind readnone uwtable
define void @_ZN3foo18he8ca29755dedebbaf4v0.0E(%struct.Foo* noalias nocapture sret, { i64, %tydesc*, i8*, i8*, i8 }* nocapture) #0 {
"function top level":
ret void
}
After:
; Function Attrs: nounwind readnone uwtable
define %struct.Foo @_ZN3foo18he8ca29755dedebbaf4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) #0 {
"function top level":
ret %struct.Foo undef
}
2013-10-03 03:59:58 -04:00
Daniel Micay
f2932e4661
make small (<= size_of::<int>()) enums immediate
...
C-like enums are excluded from this for now, because the code paths
specific to them need to be changed.
fn foo() -> Option<~int> { Some(~5) }
Before:
; Function Attrs: uwtable
define void @_ZN3foo18hdec6e36682b87eeaf4v0.0E(%"enum.std::option::Option<~int>[#1 ]"* noalias nocapture sret, { i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) #0 {
"function top level":
%2 = tail call %"enum.std::libc::types::common::c95::c_void[#1 ]"* @"_ZN2rt11global_heap10malloc_raw17h56c543b77f9b78aY11v0.9$x2dpreE"({ i64, %tydesc*, i8*, i8*, i8 }* undef, i64 8)
%3 = bitcast %"enum.std::libc::types::common::c95::c_void[#1 ]"* %2 to i64*
store i64 5, i64* %3, align 8
%4 = getelementptr inbounds %"enum.std::option::Option<~int>[#1 ]"* %0, i64 0, i32 0
store i64* %3, i64** %4, align 8
ret void
}
After:
; Function Attrs: uwtable
define %"enum.std::option::Option<~int>[#1 ]" @_ZN3foo18h2cbf6557a3143edah4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) #0 {
"function top level":
%1 = tail call %"enum.std::libc::types::common::c95::c_void[#1 ]"* @"_ZN2rt11global_heap10malloc_raw18hb1e9dd1beab35edau11v0.9$x2dpreE"({ i64, %tydesc*, i8*, i8*, i8 }* undef, i64 8)
%2 = bitcast %"enum.std::libc::types::common::c95::c_void[#1 ]"* %1 to i64*
store i64 5, i64* %2, align 8
%oldret = insertvalue %"enum.std::option::Option<~int>[#1 ]" undef, i64* %2, 0
ret %"enum.std::option::Option<~int>[#1 ]" %oldret
}
2013-10-02 10:02:52 -04:00
bors
33a5928b46
auto merge of #9656 : thestinger/rust/immediate, r=alexcrichton
...
fn foo() -> (u32, u8, u8, u8, u8) {
(4, 5, 6, 7, 8)
}
Before:
; Function Attrs: nounwind uwtable
define void @_ZN3foo18hbb616262f874f8daf4v0.0E({ i32, i8, i8, i8, i8 }* noalias nocapture sret, { i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) #0 {
"function top level":
%2 = getelementptr inbounds { i32, i8, i8, i8, i8 }* %0, i64 0, i32 0
store i32 4, i32* %2, align 4
%3 = getelementptr inbounds { i32, i8, i8, i8, i8 }* %0, i64 0, i32 1
store i8 5, i8* %3, align 4
%4 = getelementptr inbounds { i32, i8, i8, i8, i8 }* %0, i64 0, i32 2
store i8 6, i8* %4, align 1
%5 = getelementptr inbounds { i32, i8, i8, i8, i8 }* %0, i64 0, i32 3
store i8 7, i8* %5, align 2
%6 = getelementptr inbounds { i32, i8, i8, i8, i8 }* %0, i64 0, i32 4
store i8 8, i8* %6, align 1
ret void
}
After:
; Function Attrs: nounwind readnone uwtable
define { i32, i8, i8, i8, i8 } @_ZN3foo18hbb616262f874f8daf4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) #0 {
"function top level":
ret { i32, i8, i8, i8, i8 } { i32 4, i8 5, i8 6, i8 7, i8 8 }
}
2013-10-01 21:56:27 -07:00
Daniel Micay
5e4ae4f45f
make small (<= size_of::<int>()) tuples immediate
...
fn foo() -> (u32, u8, u8, u8, u8) {
(4, 5, 6, 7, 8)
}
Before:
; Function Attrs: nounwind uwtable
define void @_ZN3foo18hbb616262f874f8daf4v0.0E({ i32, i8, i8, i8, i8 }* noalias nocapture sret, { i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) #0 {
"function top level":
%2 = getelementptr inbounds { i32, i8, i8, i8, i8 }* %0, i64 0, i32 0
store i32 4, i32* %2, align 4
%3 = getelementptr inbounds { i32, i8, i8, i8, i8 }* %0, i64 0, i32 1
store i8 5, i8* %3, align 4
%4 = getelementptr inbounds { i32, i8, i8, i8, i8 }* %0, i64 0, i32 2
store i8 6, i8* %4, align 1
%5 = getelementptr inbounds { i32, i8, i8, i8, i8 }* %0, i64 0, i32 3
store i8 7, i8* %5, align 2
%6 = getelementptr inbounds { i32, i8, i8, i8, i8 }* %0, i64 0, i32 4
store i8 8, i8* %6, align 1
ret void
}
After:
; Function Attrs: nounwind readnone uwtable
define { i32, i8, i8, i8, i8 } @_ZN3foo18hbb616262f874f8daf4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) #0 {
"function top level":
ret { i32, i8, i8, i8, i8 } { i32 4, i8 5, i8 6, i8 7, i8 8 }
}
2013-10-01 02:57:59 -04:00
Alex Crichton
1b80558be3
rustc: Remove usage of fmt!
2013-09-30 23:21:19 -07:00
Daniel Micay
11b7109b7b
rm only use of type_is_immediate outside of trans
2013-09-30 18:16:35 -04:00
blake2-ppc
f4d8d8c122
trans::build: Change @mut Block to &Block or &mut Block
...
Use &mut Block and &Block references where possible in the builder
functions in trans::build.
@mut Block remains in a few functions where I could not (not yet at
least) track down the runtime borrowck failures.
2013-09-30 19:37:22 +02:00
blake2-ppc
948b5ab87a
trans: Change @ast::Expr -> &ast::Expr where possible
2013-09-30 19:37:17 +02:00
Patrick Walton
7796d519f9
librustc: Don't use garbage-collected closures to store cleanups.
2013-09-23 18:23:19 -07:00
Daniel Micay
4e161a4d40
switch Drop to &mut self
2013-09-16 22:19:23 -04:00
Erick Tryzelaar
7f9c5aae9e
std: Restore Option::chain{,_mut}_ref as and_then{,_mut}_ref
2013-09-12 18:54:28 -07:00