Skip to content

Commit 0840395

Browse files
committed
---
yaml --- r: 145134 b: refs/heads/try2 c: 51470f3 h: refs/heads/master v: v3
1 parent 672a170 commit 0840395

File tree

30 files changed

+291
-2220
lines changed

30 files changed

+291
-2220
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 3e1803f3af1adc1b2e5595650f6920f40bbedc2e
8+
refs/heads/try2: 51470f3b97428756bee70e564db026ba2e2bceb6
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/Makefile.in

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,6 @@ CFG_LIBRUSTC_$(1) :=$(call CFG_LIB_NAME_$(1),rustc)
214214
CFG_LIBSYNTAX_$(1) :=$(call CFG_LIB_NAME_$(1),syntax)
215215
CFG_LIBRUSTPKG_$(1) :=$(call CFG_LIB_NAME_$(1),rustpkg)
216216
CFG_LIBRUSTDOC_$(1) :=$(call CFG_LIB_NAME_$(1),rustdoc)
217-
CFG_LIBRUSTDOCNG_$(1) :=$(call CFG_LIB_NAME_$(1),rustdoc_ng)
218217
CFG_LIBRUSTI_$(1) :=$(call CFG_LIB_NAME_$(1),rusti)
219218
CFG_LIBRUST_$(1) :=$(call CFG_LIB_NAME_$(1),rust)
220219

@@ -224,7 +223,6 @@ LIBRUSTC_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustc)
224223
LIBSYNTAX_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),syntax)
225224
LIBRUSTPKG_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustpkg)
226225
LIBRUSTDOC_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustdoc)
227-
LIBRUSTDOCNG_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustdoc_ng)
228226
LIBRUSTI_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rusti)
229227
LIBRUST_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rust)
230228
EXTRALIB_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),extra)
@@ -233,7 +231,6 @@ LIBRUSTC_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustc)
233231
LIBSYNTAX_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),syntax)
234232
LIBRUSTPKG_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustpkg)
235233
LIBRUSTDOC_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustdoc)
236-
LIBRUSTDOCNG_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustdoc_ng)
237234
LIBRUSTI_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rusti)
238235
LIBRUST_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rust)
239236

@@ -446,7 +443,6 @@ CSREQ$(1)_T_$(2)_H_$(3) = \
446443
$$(HBIN$(1)_H_$(3))/rust$$(X_$(3)) \
447444
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)) \
448445
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)) \
449-
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(3)) \
450446
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTI_$(3)) \
451447
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUST_$(3)) \
452448
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)) \
@@ -455,7 +451,6 @@ CSREQ$(1)_T_$(2)_H_$(3) = \
455451
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(2)) \
456452
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(2)) \
457453
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(2)) \
458-
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(2)) \
459454
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTI_$(2)) \
460455
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUST_$(2))
461456

branches/try2/mk/clean.mk

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ clean$(1)_H_$(2):
7272
$(Q)rm -f $$(HBIN$(1)_H_$(2))/rust$(X_$(2))
7373
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTPKG_$(2))
7474
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTDOC_$(2))
75-
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTDOCNG_$(2))
7675
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUNTIME_$(2))
7776
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_STDLIB_$(2))
7877
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_EXTRALIB_$(2))
@@ -86,7 +85,6 @@ clean$(1)_H_$(2):
8685
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBSYNTAX_GLOB_$(2))
8786
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTPKG_GLOB_$(2))
8887
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTDOC_GLOB_$(2))
89-
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTDOCNG_GLOB_$(2))
9088
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTI_GLOB_$(2))
9189
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUST_GLOB_$(2))
9290
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUSTLLVM_$(2))
@@ -109,7 +107,6 @@ clean$(1)_T_$(2)_H_$(3):
109107
$(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rust$(X_$(2))
110108
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(2))
111109
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(2))
112-
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(2))
113110
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUNTIME_$(2))
114111
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2))
115112
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_EXTRALIB_$(2))
@@ -123,7 +120,6 @@ clean$(1)_T_$(2)_H_$(3):
123120
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBSYNTAX_GLOB_$(2))
124121
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTPKG_GLOB_$(2))
125122
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTDOC_GLOB_$(2))
126-
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTDOCNG_GLOB_$(2))
127123
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTI_GLOB_$(2))
128124
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUST_GLOB_$(2))
129125
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM_$(2))

branches/try2/mk/install.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ install-target-$(1)-host-$(2): $$(CSREQ$$(ISTAGE)_T_$(1)_H_$(2))
104104
$$(Q)$$(call INSTALL_LIB,$$(LIBSYNTAX_GLOB_$(1)))
105105
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTPKG_GLOB_$(1)))
106106
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTDOC_GLOB_$(1)))
107-
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTDOCNG_GLOB_$(1)))
108107
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTI_GLOB_$(1)))
109108
$$(Q)$$(call INSTALL_LIB,$$(LIBRUST_GLOB_$(1)))
110109
$$(Q)$$(call INSTALL_LIB,libmorestack.a)
@@ -150,7 +149,6 @@ install-host: $(CSREQ$(ISTAGE)_T_$(CFG_BUILD_TRIPLE)_H_$(CFG_BUILD_TRIPLE))
150149
$(Q)$(call INSTALL_LIB,$(LIBRUST_GLOB_$(CFG_BUILD_TRIPLE)))
151150
$(Q)$(call INSTALL_LIB,$(LIBRUSTPKG_GLOB_$(CFG_BUILD_TRIPLE)))
152151
$(Q)$(call INSTALL_LIB,$(LIBRUSTDOC_GLOB_$(CFG_BUILD_TRIPLE)))
153-
$(Q)$(call INSTALL_LIB,$(LIBRUSTDOCNG_GLOB_$(CFG_BUILD_TRIPLE)))
154152
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUNTIME_$(CFG_BUILD_TRIPLE)))
155153
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUSTLLVM_$(CFG_BUILD_TRIPLE)))
156154
$(Q)$(call INSTALL,$(S)/man, $(PREFIX_ROOT)/share/man/man1,rust.1)

branches/try2/mk/tools.mk

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@ RUSTPKG_INPUTS := $(wildcard $(S)src/librustpkg/*.rs)
2323
RUSTDOC_LIB := $(S)src/librustdoc/rustdoc.rs
2424
RUSTDOC_INPUTS := $(wildcard $(S)src/librustdoc/*.rs)
2525

26-
# rustdoc_ng, the next generation documentation tool
27-
28-
RUSTDOCNG_LIB := $(S)src/rustdoc_ng/lib.rs
29-
RUSTDOCNG_INPUTS := $(wildcard $(S)src/rustdoc_ng/*.rs)
30-
3126
# Rusti, the JIT REPL
3227
RUSTI_LIB := $(S)src/librusti/rusti.rs
3328
RUSTI_INPUTS := $(wildcard $(S)src/librusti/*.rs)
@@ -83,24 +78,6 @@ $$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X_$(4)): \
8378
@$$(call E, compile_and_link: $$@)
8479
$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc -o $$@ $$<
8580

86-
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(4)): \
87-
$$(RUSTDOCNG_LIB) $$(RUSTDOCNG_INPUTS) \
88-
$$(SREQ$(1)_T_$(4)_H_$(3)) \
89-
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \
90-
| $$(TLIB$(1)_T_$(4)_H_$(3))/
91-
@$$(call E, compile_and_link: $$@)
92-
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTDOCNG_GLOB_$(4)),$$(notdir $$@))
93-
$$(STAGE$(1)_T_$(4)_H_$(3)) --out-dir $$(@D) $$< && touch $$@
94-
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTDOCNG_GLOB_$(4)),$$(notdir $$@))
95-
96-
$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc_ng$$(X_$(4)): \
97-
$$(DRIVER_CRATE) \
98-
$$(TSREQ$(1)_T_$(4)_H_$(3)) \
99-
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(4)) \
100-
| $$(TBIN$(1)_T_$(4)_H_$(3))/
101-
@$$(call E, compile_and_link: $$@)
102-
$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc_ng -o $$@ $$<
103-
10481
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)): \
10582
$$(RUSTI_LIB) $$(RUSTI_INPUTS) \
10683
$$(SREQ$(1)_T_$(4)_H_$(3)) \
@@ -125,7 +102,6 @@ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)): \
125102
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)) \
126103
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)) \
127104
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)) \
128-
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(4)) \
129105
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \
130106
| $$(TLIB$(1)_T_$(4)_H_$(3))/
131107
@$$(call E, compile_and_link: $$@)
@@ -195,19 +171,6 @@ $$(HBIN$(2)_H_$(4))/rustdoc$$(X_$(4)): \
195171
@$$(call E, cp: $$@)
196172
$$(Q)cp $$< $$@
197173

198-
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOCNG_$(4)): \
199-
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(4)) \
200-
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \
201-
$$(HSREQ$(2)_H_$(4)) \
202-
| $$(HLIB$(2)_H_$(4))/
203-
@$$(call E, cp: $$@)
204-
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTDOCNG_GLOB_$(4)),$$(notdir $$@))
205-
$$(Q)cp $$< $$@
206-
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTDOCNG_GLOB_$(4)),$$(notdir $$@))
207-
$$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOCNG_GLOB_$(4)) \
208-
$$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOCNG_DSYM_GLOB_$(4))) \
209-
$$(HLIB$(2)_H_$(4))
210-
211174
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(4)): \
212175
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)) \
213176
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \

branches/try2/src/librustc/metadata/encoder.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -905,8 +905,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
905905
encode_type(ecx, ebml_w, node_id_to_type(tcx, item.id));
906906
encode_symbol(ecx, ebml_w, item.id);
907907
encode_name(ecx, ebml_w, item.ident);
908-
let elt = ast_map::path_pretty_name(item.ident, item.id as u64);
909-
encode_path(ecx, ebml_w, path, elt);
908+
encode_path(ecx, ebml_w, path, ast_map::path_name(item.ident));
910909
(ecx.encode_inlined_item)(ecx, ebml_w, path, ii_item(item));
911910
ebml_w.end_tag();
912911
}

branches/try2/src/librustc/middle/trans/base.rs

Lines changed: 19 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ use syntax::parse::token;
8686
use syntax::parse::token::{special_idents};
8787
use syntax::print::pprust::stmt_to_str;
8888
use syntax::{ast, ast_util, codemap, ast_map};
89-
use syntax::abi::{X86, X86_64, Arm, Mips, Rust, RustIntrinsic};
89+
use syntax::abi::{X86, X86_64, Arm, Mips};
9090
use syntax::visit;
9191
use syntax::visit::Visitor;
9292

@@ -813,33 +813,19 @@ pub fn trans_external_path(ccx: &mut CrateContext, did: ast::DefId, t: ty::t)
813813
-> ValueRef {
814814
let name = csearch::get_symbol(ccx.sess.cstore, did);
815815
match ty::get(t).sty {
816-
ty::ty_bare_fn(ref fn_ty) => {
817-
// Currently llvm_calling_convention triggers unimpl/bug on
818-
// Rust/RustIntrinsic, so those two are handled specially here.
819-
let cconv = match fn_ty.abis.for_arch(ccx.sess.targ_cfg.arch) {
820-
Some(Rust) | Some(RustIntrinsic) => lib::llvm::CCallConv,
821-
Some(*) | None => {
822-
let c = foreign::llvm_calling_convention(ccx, fn_ty.abis);
823-
c.unwrap_or(lib::llvm::CCallConv)
824-
}
825-
};
826-
let llty = type_of_fn_from_ty(ccx, t);
827-
return get_extern_fn(&mut ccx.externs, ccx.llmod, name, cconv, llty);
828-
}
829-
ty::ty_closure(_) => {
830-
let llty = type_of_fn_from_ty(ccx, t);
831-
return get_extern_fn(&mut ccx.externs, ccx.llmod, name,
832-
lib::llvm::CCallConv, llty);
833-
}
834-
_ => {
835-
let llty = type_of(ccx, t);
836-
return get_extern_const(&mut ccx.externs, ccx.llmod, name, llty);
837-
}
816+
ty::ty_bare_fn(_) | ty::ty_closure(_) => {
817+
let llty = type_of_fn_from_ty(ccx, t);
818+
return get_extern_fn(&mut ccx.externs, ccx.llmod, name,
819+
lib::llvm::CCallConv, llty);
820+
}
821+
_ => {
822+
let llty = type_of(ccx, t);
823+
return get_extern_const(&mut ccx.externs, ccx.llmod, name, llty);
824+
}
838825
};
839826
}
840827
841-
pub fn invoke(bcx: @mut Block, llfn: ValueRef, llargs: ~[ValueRef],
842-
attributes: &[(uint, lib::llvm::Attribute)])
828+
pub fn invoke(bcx: @mut Block, llfn: ValueRef, llargs: ~[ValueRef])
843829
-> (ValueRef, @mut Block) {
844830
let _icx = push_ctxt("invoke_");
845831
if bcx.unreachable {
@@ -879,7 +865,7 @@ pub fn invoke(bcx: @mut Block, llfn: ValueRef, llargs: ~[ValueRef],
879865
debug!("arg: %x", ::std::cast::transmute(llarg));
880866
}
881867
}
882-
let llresult = Call(bcx, llfn, llargs, attributes);
868+
let llresult = Call(bcx, llfn, llargs);
883869
return (llresult, bcx);
884870
}
885871
}
@@ -990,7 +976,7 @@ pub fn get_landing_pad(bcx: @mut Block) -> BasicBlockRef {
990976
// Because we may have unwound across a stack boundary, we must call into
991977
// the runtime to figure out which stack segment we are on and place the
992978
// stack limit back into the TLS.
993-
Call(pad_bcx, bcx.ccx().upcalls.reset_stack_limit, [], []);
979+
Call(pad_bcx, bcx.ccx().upcalls.reset_stack_limit, []);
994980

995981
// We store the retval in a function-central alloca, so that calls to
996982
// Resume can find it.
@@ -1085,7 +1071,7 @@ pub fn trans_trace(bcx: @mut Block, sp_opt: Option<Span>, trace_str: @str) {
10851071
let V_trace_str = PointerCast(bcx, V_trace_str, Type::i8p());
10861072
let V_filename = PointerCast(bcx, V_filename, Type::i8p());
10871073
let args = ~[V_trace_str, V_filename, C_int(ccx, V_line)];
1088-
Call(bcx, ccx.upcalls.trace, args, []);
1074+
Call(bcx, ccx.upcalls.trace, args);
10891075
}
10901076
10911077
pub fn ignore_lhs(_bcx: @mut Block, local: &ast::Local) -> bool {
@@ -1479,7 +1465,7 @@ pub fn call_memcpy(cx: @mut Block, dst: ValueRef, src: ValueRef, n_bytes: ValueR
14791465
let size = IntCast(cx, n_bytes, ccx.int_type);
14801466
let align = C_i32(align as i32);
14811467
let volatile = C_i1(false);
1482-
Call(cx, memcpy, [dst_ptr, src_ptr, size, align, volatile], []);
1468+
Call(cx, memcpy, [dst_ptr, src_ptr, size, align, volatile]);
14831469
}
14841470

14851471
pub fn memcpy_ty(bcx: @mut Block, dst: ValueRef, src: ValueRef, t: ty::t) {
@@ -1524,7 +1510,7 @@ pub fn memzero(b: &Builder, llptr: ValueRef, ty: Type) {
15241510
let size = machine::llsize_of(ccx, ty);
15251511
let align = C_i32(llalign_of_min(ccx, ty) as i32);
15261512
let volatile = C_i1(false);
1527-
b.call(llintrinsicfn, [llptr, llzeroval, size, align, volatile], []);
1513+
b.call(llintrinsicfn, [llptr, llzeroval, size, align, volatile]);
15281514
}
15291515

15301516
pub fn alloc_ty(bcx: @mut Block, t: ty::t, name: &str) -> ValueRef {
@@ -2367,7 +2353,7 @@ pub fn create_entry_wrapper(ccx: @mut CrateContext,
23672353
llvm::LLVMGetParam(llfdecl, env_arg as c_uint)
23682354
};
23692355
let args = ~[llenvarg];
2370-
Call(bcx, main_llfn, args, []);
2356+
Call(bcx, main_llfn, args);
23712357

23722358
finish_fn(fcx, bcx);
23732359
return llfdecl;
@@ -2488,8 +2474,7 @@ pub fn get_item_val(ccx: @mut CrateContext, id: ast::NodeId) -> ValueRef {
24882474
let val = match item {
24892475
ast_map::node_item(i, pth) => {
24902476

2491-
let elt = path_pretty_name(i.ident, id as u64);
2492-
let my_path = vec::append_one((*pth).clone(), elt);
2477+
let my_path = vec::append((*pth).clone(), [path_name(i.ident)]);
24932478
let ty = ty::node_id_to_type(ccx.tcx, i.id);
24942479
let sym = exported_name(ccx, my_path, ty, i.attrs);
24952480

@@ -2823,7 +2808,7 @@ pub fn declare_dbg_intrinsics(llmod: ModuleRef, intrinsics: &mut HashMap<&'stati
28232808

28242809
pub fn trap(bcx: @mut Block) {
28252810
match bcx.ccx().intrinsics.find_equiv(& &"llvm.trap") {
2826-
Some(&x) => { Call(bcx, x, [], []); },
2811+
Some(&x) => { Call(bcx, x, []); },
28272812
_ => bcx.sess().bug("unbound llvm.trap in trap")
28282813
}
28292814
}

branches/try2/src/librustc/middle/trans/build.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -644,16 +644,20 @@ pub fn InlineAsmCall(cx: @mut Block, asm: *c_char, cons: *c_char,
644644
B(cx).inline_asm_call(asm, cons, inputs, output, volatile, alignstack, dia)
645645
}
646646

647-
pub fn Call(cx: @mut Block, Fn: ValueRef, Args: &[ValueRef],
648-
attributes: &[(uint, lib::llvm::Attribute)]) -> ValueRef {
647+
pub fn Call(cx: @mut Block, Fn: ValueRef, Args: &[ValueRef]) -> ValueRef {
649648
if cx.unreachable { return _UndefReturn(cx, Fn); }
650-
B(cx).call(Fn, Args, attributes)
649+
B(cx).call(Fn, Args)
651650
}
652651

653-
pub fn CallWithConv(cx: @mut Block, Fn: ValueRef, Args: &[ValueRef], Conv: CallConv,
654-
attributes: &[(uint, lib::llvm::Attribute)]) -> ValueRef {
652+
pub fn FastCall(cx: @mut Block, Fn: ValueRef, Args: &[ValueRef]) -> ValueRef {
655653
if cx.unreachable { return _UndefReturn(cx, Fn); }
656-
B(cx).call_with_conv(Fn, Args, Conv, attributes)
654+
B(cx).call(Fn, Args)
655+
}
656+
657+
pub fn CallWithConv(cx: @mut Block, Fn: ValueRef, Args: &[ValueRef],
658+
Conv: CallConv, sret: bool) -> ValueRef {
659+
if cx.unreachable { return _UndefReturn(cx, Fn); }
660+
B(cx).call_with_conv(Fn, Args, Conv, sret)
657661
}
658662

659663
pub fn AtomicFence(cx: @mut Block, order: AtomicOrdering) {

branches/try2/src/librustc/middle/trans/builder.rs

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use lib::llvm::llvm;
1313
use lib::llvm::{CallConv, AtomicBinOp, AtomicOrdering, AsmDialect};
1414
use lib::llvm::{Opcode, IntPredicate, RealPredicate, False};
1515
use lib::llvm::{ValueRef, BasicBlockRef, BuilderRef, ModuleRef};
16+
use lib::llvm::{StructRetAttribute};
1617
use middle::trans::base;
1718
use middle::trans::common::*;
1819
use middle::trans::machine::llalign_of_min;
@@ -747,7 +748,7 @@ impl Builder {
747748
c, noname(), False, False)
748749
}
749750
};
750-
self.call(asm, [], []);
751+
self.call(asm, []);
751752
}
752753
}
753754

@@ -772,29 +773,42 @@ impl Builder {
772773
unsafe {
773774
let v = llvm::LLVMInlineAsm(
774775
fty.to_ref(), asm, cons, volatile, alignstack, dia as c_uint);
775-
self.call(v, inputs, [])
776+
self.call(v, inputs)
776777
}
777778
}
778779

779-
pub fn call(&self, llfn: ValueRef, args: &[ValueRef],
780-
attributes: &[(uint, lib::llvm::Attribute)]) -> ValueRef {
780+
pub fn call(&self, llfn: ValueRef, args: &[ValueRef]) -> ValueRef {
781781
self.count_insn("call");
782+
do args.as_imm_buf |ptr, len| {
783+
unsafe {
784+
llvm::LLVMBuildCall(self.llbuilder, llfn, ptr, len as c_uint, noname())
785+
}
786+
}
787+
}
788+
789+
pub fn fastcall(&self, llfn: ValueRef, args: &[ValueRef]) -> ValueRef {
790+
self.count_insn("fastcall");
782791
unsafe {
783792
let v = llvm::LLVMBuildCall(self.llbuilder, llfn, vec::raw::to_ptr(args),
784793
args.len() as c_uint, noname());
785-
for &(idx, attr) in attributes.iter() {
786-
llvm::LLVMAddInstrAttribute(v, idx as c_uint, attr as c_uint);
787-
}
794+
lib::llvm::SetInstructionCallConv(v, lib::llvm::FastCallConv);
788795
v
789796
}
790797
}
791798

792799
pub fn call_with_conv(&self, llfn: ValueRef, args: &[ValueRef],
793-
conv: CallConv, attributes: &[(uint, lib::llvm::Attribute)]) -> ValueRef {
800+
conv: CallConv, sret: bool) -> ValueRef {
794801
self.count_insn("callwithconv");
795-
let v = self.call(llfn, args, attributes);
796-
lib::llvm::SetInstructionCallConv(v, conv);
797-
v
802+
unsafe {
803+
let v = llvm::LLVMBuildCall(self.llbuilder, llfn, vec::raw::to_ptr(args),
804+
args.len() as c_uint, noname());
805+
lib::llvm::SetInstructionCallConv(v, conv);
806+
if sret {
807+
let return_slot = 1;
808+
llvm::LLVMAddInstrAttribute(v, return_slot, StructRetAttribute as c_uint);
809+
}
810+
v
811+
}
798812
}
799813

800814
pub fn select(&self, cond: ValueRef, then_val: ValueRef, else_val: ValueRef) -> ValueRef {

0 commit comments

Comments
 (0)