Skip to content

Commit 43b8782

Browse files
committed
---
yaml --- r: 145135 b: refs/heads/try2 c: 2562f48 h: refs/heads/master i: 145133: 672a170 145131: 8bcafd5 145127: 034e5d3 145119: 37a3de2 v: v3
1 parent 0840395 commit 43b8782

File tree

29 files changed

+2217
-217
lines changed

29 files changed

+2217
-217
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: 51470f3b97428756bee70e564db026ba2e2bceb6
8+
refs/heads/try2: 2562f480f53fd3d15822034d441441ffbd04dbe4
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: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ 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)
217218
CFG_LIBRUSTI_$(1) :=$(call CFG_LIB_NAME_$(1),rusti)
218219
CFG_LIBRUST_$(1) :=$(call CFG_LIB_NAME_$(1),rust)
219220

@@ -223,6 +224,7 @@ LIBRUSTC_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustc)
223224
LIBSYNTAX_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),syntax)
224225
LIBRUSTPKG_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustpkg)
225226
LIBRUSTDOC_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustdoc)
227+
LIBRUSTDOCNG_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustdoc_ng)
226228
LIBRUSTI_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rusti)
227229
LIBRUST_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rust)
228230
EXTRALIB_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),extra)
@@ -231,6 +233,7 @@ LIBRUSTC_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustc)
231233
LIBSYNTAX_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),syntax)
232234
LIBRUSTPKG_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustpkg)
233235
LIBRUSTDOC_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustdoc)
236+
LIBRUSTDOCNG_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustdoc_ng)
234237
LIBRUSTI_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rusti)
235238
LIBRUST_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rust)
236239

@@ -443,6 +446,7 @@ CSREQ$(1)_T_$(2)_H_$(3) = \
443446
$$(HBIN$(1)_H_$(3))/rust$$(X_$(3)) \
444447
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)) \
445448
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)) \
449+
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(3)) \
446450
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTI_$(3)) \
447451
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUST_$(3)) \
448452
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)) \
@@ -451,6 +455,7 @@ CSREQ$(1)_T_$(2)_H_$(3) = \
451455
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(2)) \
452456
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(2)) \
453457
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(2)) \
458+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(2)) \
454459
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTI_$(2)) \
455460
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUST_$(2))
456461

branches/try2/mk/clean.mk

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ 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))
7576
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUNTIME_$(2))
7677
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_STDLIB_$(2))
7778
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_EXTRALIB_$(2))
@@ -85,6 +86,7 @@ clean$(1)_H_$(2):
8586
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBSYNTAX_GLOB_$(2))
8687
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTPKG_GLOB_$(2))
8788
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTDOC_GLOB_$(2))
89+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTDOCNG_GLOB_$(2))
8890
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTI_GLOB_$(2))
8991
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUST_GLOB_$(2))
9092
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUSTLLVM_$(2))
@@ -107,6 +109,7 @@ clean$(1)_T_$(2)_H_$(3):
107109
$(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rust$(X_$(2))
108110
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(2))
109111
$(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))
110113
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUNTIME_$(2))
111114
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2))
112115
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_EXTRALIB_$(2))
@@ -120,6 +123,7 @@ clean$(1)_T_$(2)_H_$(3):
120123
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBSYNTAX_GLOB_$(2))
121124
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTPKG_GLOB_$(2))
122125
$(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))
123127
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTI_GLOB_$(2))
124128
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUST_GLOB_$(2))
125129
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM_$(2))

branches/try2/mk/install.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ 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)))
107108
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTI_GLOB_$(1)))
108109
$$(Q)$$(call INSTALL_LIB,$$(LIBRUST_GLOB_$(1)))
109110
$$(Q)$$(call INSTALL_LIB,libmorestack.a)
@@ -149,6 +150,7 @@ install-host: $(CSREQ$(ISTAGE)_T_$(CFG_BUILD_TRIPLE)_H_$(CFG_BUILD_TRIPLE))
149150
$(Q)$(call INSTALL_LIB,$(LIBRUST_GLOB_$(CFG_BUILD_TRIPLE)))
150151
$(Q)$(call INSTALL_LIB,$(LIBRUSTPKG_GLOB_$(CFG_BUILD_TRIPLE)))
151152
$(Q)$(call INSTALL_LIB,$(LIBRUSTDOC_GLOB_$(CFG_BUILD_TRIPLE)))
153+
$(Q)$(call INSTALL_LIB,$(LIBRUSTDOCNG_GLOB_$(CFG_BUILD_TRIPLE)))
152154
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUNTIME_$(CFG_BUILD_TRIPLE)))
153155
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUSTLLVM_$(CFG_BUILD_TRIPLE)))
154156
$(Q)$(call INSTALL,$(S)/man, $(PREFIX_ROOT)/share/man/man1,rust.1)

branches/try2/mk/tools.mk

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ 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+
2631
# Rusti, the JIT REPL
2732
RUSTI_LIB := $(S)src/librusti/rusti.rs
2833
RUSTI_INPUTS := $(wildcard $(S)src/librusti/*.rs)
@@ -78,6 +83,24 @@ $$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X_$(4)): \
7883
@$$(call E, compile_and_link: $$@)
7984
$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc -o $$@ $$<
8085

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+
81104
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)): \
82105
$$(RUSTI_LIB) $$(RUSTI_INPUTS) \
83106
$$(SREQ$(1)_T_$(4)_H_$(3)) \
@@ -102,6 +125,7 @@ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)): \
102125
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)) \
103126
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)) \
104127
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)) \
128+
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(4)) \
105129
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \
106130
| $$(TLIB$(1)_T_$(4)_H_$(3))/
107131
@$$(call E, compile_and_link: $$@)
@@ -171,6 +195,19 @@ $$(HBIN$(2)_H_$(4))/rustdoc$$(X_$(4)): \
171195
@$$(call E, cp: $$@)
172196
$$(Q)cp $$< $$@
173197

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+
174211
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(4)): \
175212
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)) \
176213
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -905,7 +905,8 @@ 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-
encode_path(ecx, ebml_w, path, ast_map::path_name(item.ident));
908+
let elt = ast_map::path_pretty_name(item.ident, item.id as u64);
909+
encode_path(ecx, ebml_w, path, elt);
909910
(ecx.encode_inlined_item)(ecx, ebml_w, path, ii_item(item));
910911
ebml_w.end_tag();
911912
}

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

Lines changed: 34 additions & 19 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};
89+
use syntax::abi::{X86, X86_64, Arm, Mips, Rust, RustIntrinsic};
9090
use syntax::visit;
9191
use syntax::visit::Visitor;
9292

@@ -813,19 +813,33 @@ 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(_) | 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-
}
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+
}
825838
};
826839
}
827840
828-
pub fn invoke(bcx: @mut Block, llfn: ValueRef, llargs: ~[ValueRef])
841+
pub fn invoke(bcx: @mut Block, llfn: ValueRef, llargs: ~[ValueRef],
842+
attributes: &[(uint, lib::llvm::Attribute)])
829843
-> (ValueRef, @mut Block) {
830844
let _icx = push_ctxt("invoke_");
831845
if bcx.unreachable {
@@ -865,7 +879,7 @@ pub fn invoke(bcx: @mut Block, llfn: ValueRef, llargs: ~[ValueRef])
865879
debug!("arg: %x", ::std::cast::transmute(llarg));
866880
}
867881
}
868-
let llresult = Call(bcx, llfn, llargs);
882+
let llresult = Call(bcx, llfn, llargs, attributes);
869883
return (llresult, bcx);
870884
}
871885
}
@@ -976,7 +990,7 @@ pub fn get_landing_pad(bcx: @mut Block) -> BasicBlockRef {
976990
// Because we may have unwound across a stack boundary, we must call into
977991
// the runtime to figure out which stack segment we are on and place the
978992
// stack limit back into the TLS.
979-
Call(pad_bcx, bcx.ccx().upcalls.reset_stack_limit, []);
993+
Call(pad_bcx, bcx.ccx().upcalls.reset_stack_limit, [], []);
980994

981995
// We store the retval in a function-central alloca, so that calls to
982996
// Resume can find it.
@@ -1071,7 +1085,7 @@ pub fn trans_trace(bcx: @mut Block, sp_opt: Option<Span>, trace_str: @str) {
10711085
let V_trace_str = PointerCast(bcx, V_trace_str, Type::i8p());
10721086
let V_filename = PointerCast(bcx, V_filename, Type::i8p());
10731087
let args = ~[V_trace_str, V_filename, C_int(ccx, V_line)];
1074-
Call(bcx, ccx.upcalls.trace, args);
1088+
Call(bcx, ccx.upcalls.trace, args, []);
10751089
}
10761090
10771091
pub fn ignore_lhs(_bcx: @mut Block, local: &ast::Local) -> bool {
@@ -1465,7 +1479,7 @@ pub fn call_memcpy(cx: @mut Block, dst: ValueRef, src: ValueRef, n_bytes: ValueR
14651479
let size = IntCast(cx, n_bytes, ccx.int_type);
14661480
let align = C_i32(align as i32);
14671481
let volatile = C_i1(false);
1468-
Call(cx, memcpy, [dst_ptr, src_ptr, size, align, volatile]);
1482+
Call(cx, memcpy, [dst_ptr, src_ptr, size, align, volatile], []);
14691483
}
14701484

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

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

23582372
finish_fn(fcx, bcx);
23592373
return llfdecl;
@@ -2474,7 +2488,8 @@ pub fn get_item_val(ccx: @mut CrateContext, id: ast::NodeId) -> ValueRef {
24742488
let val = match item {
24752489
ast_map::node_item(i, pth) => {
24762490

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

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

28092824
pub fn trap(bcx: @mut Block) {
28102825
match bcx.ccx().intrinsics.find_equiv(& &"llvm.trap") {
2811-
Some(&x) => { Call(bcx, x, []); },
2826+
Some(&x) => { Call(bcx, x, [], []); },
28122827
_ => bcx.sess().bug("unbound llvm.trap in trap")
28132828
}
28142829
}

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

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -644,20 +644,16 @@ 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]) -> ValueRef {
647+
pub fn Call(cx: @mut Block, Fn: ValueRef, Args: &[ValueRef],
648+
attributes: &[(uint, lib::llvm::Attribute)]) -> ValueRef {
648649
if cx.unreachable { return _UndefReturn(cx, Fn); }
649-
B(cx).call(Fn, Args)
650+
B(cx).call(Fn, Args, attributes)
650651
}
651652

652-
pub fn FastCall(cx: @mut Block, Fn: ValueRef, Args: &[ValueRef]) -> ValueRef {
653+
pub fn CallWithConv(cx: @mut Block, Fn: ValueRef, Args: &[ValueRef], Conv: CallConv,
654+
attributes: &[(uint, lib::llvm::Attribute)]) -> ValueRef {
653655
if cx.unreachable { return _UndefReturn(cx, Fn); }
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)
656+
B(cx).call_with_conv(Fn, Args, Conv, attributes)
661657
}
662658

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

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

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ 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};
1716
use middle::trans::base;
1817
use middle::trans::common::*;
1918
use middle::trans::machine::llalign_of_min;
@@ -748,7 +747,7 @@ impl Builder {
748747
c, noname(), False, False)
749748
}
750749
};
751-
self.call(asm, []);
750+
self.call(asm, [], []);
752751
}
753752
}
754753

@@ -773,42 +772,29 @@ impl Builder {
773772
unsafe {
774773
let v = llvm::LLVMInlineAsm(
775774
fty.to_ref(), asm, cons, volatile, alignstack, dia as c_uint);
776-
self.call(v, inputs)
775+
self.call(v, inputs, [])
777776
}
778777
}
779778

780-
pub fn call(&self, llfn: ValueRef, args: &[ValueRef]) -> ValueRef {
779+
pub fn call(&self, llfn: ValueRef, args: &[ValueRef],
780+
attributes: &[(uint, lib::llvm::Attribute)]) -> 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");
791782
unsafe {
792783
let v = llvm::LLVMBuildCall(self.llbuilder, llfn, vec::raw::to_ptr(args),
793784
args.len() as c_uint, noname());
794-
lib::llvm::SetInstructionCallConv(v, lib::llvm::FastCallConv);
785+
for &(idx, attr) in attributes.iter() {
786+
llvm::LLVMAddInstrAttribute(v, idx as c_uint, attr as c_uint);
787+
}
795788
v
796789
}
797790
}
798791

799792
pub fn call_with_conv(&self, llfn: ValueRef, args: &[ValueRef],
800-
conv: CallConv, sret: bool) -> ValueRef {
793+
conv: CallConv, attributes: &[(uint, lib::llvm::Attribute)]) -> ValueRef {
801794
self.count_insn("callwithconv");
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-
}
795+
let v = self.call(llfn, args, attributes);
796+
lib::llvm::SetInstructionCallConv(v, conv);
797+
v
812798
}
813799

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

0 commit comments

Comments
 (0)