Skip to content

Commit f94a883

Browse files
committed
---
yaml --- r: 65260 b: refs/heads/master c: 5787bf3 h: refs/heads/master v: v3
1 parent 7dbe121 commit f94a883

File tree

14 files changed

+284
-204
lines changed

14 files changed

+284
-204
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: e69e80938bd000611ec17c3c23606e060f9b660a
2+
refs/heads/master: 5787bf3093e75aa28fb081160f7d7fa66f528f9c
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 18e3db7392d2d0697b7e27d6d986139960144d85
55
refs/heads/try: 7b78b52e602bb3ea8174f9b2006bff3315f03ef9

trunk/configure

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -665,16 +665,12 @@ make_dir rt
665665
for t in $CFG_TARGET_TRIPLES
666666
do
667667
make_dir rt/$t
668-
for s in 0 1 2 3
668+
for i in \
669+
isaac linenoise sync test \
670+
arch/i386 arch/x86_64 arch/arm arch/mips \
671+
libuv libuv/src/ares libuv/src/eio libuv/src/ev
669672
do
670-
make_dir rt/$t/stage$s
671-
for i in \
672-
isaac linenoise sync test \
673-
arch/i386 arch/x86_64 arch/arm arch/mips \
674-
libuv libuv/src/ares libuv/src/eio libuv/src/ev
675-
do
676-
make_dir rt/$t/stage$s/$i
677-
done
673+
make_dir rt/$t/$i
678674
done
679675
done
680676

trunk/doc/rust.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2435,10 +2435,11 @@ match x {
24352435
}
24362436
~~~~
24372437

2438-
Patterns that bind variables default to binding to a copy of the matched value. This can be made
2439-
explicit using the ```copy``` keyword, changed to bind to a borrowed pointer by using the ```ref```
2440-
keyword, or to a mutable borrowed pointer using ```ref mut```, or the value can be moved into
2441-
the new binding using ```move```.
2438+
Patterns that bind variables default to binding to a copy or move of the matched value
2439+
(depending on the matched value's type).
2440+
This can be made explicit using the ```copy``` keyword,
2441+
changed to bind to a borrowed pointer by using the ```ref``` keyword,
2442+
or to a mutable borrowed pointer using ```ref mut```.
24422443

24432444
A pattern that's just an identifier,
24442445
like `Nil` in the previous answer,

trunk/mk/rt.mk

Lines changed: 47 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,14 @@ ifneq ($(strip $(findstring snap,$(MAKECMDGOALS))),)
4141
SNAP_DEFINES=-DRUST_SNAPSHOT
4242
endif
4343

44+
4445
define DEF_RUNTIME_TARGETS
4546

4647
######################################################################
4748
# Runtime (C++) library variables
4849
######################################################################
4950

50-
# $(1) is the target triple
51-
# $(2) is the stage number
52-
53-
RUNTIME_CFLAGS_$(1)_$(2) = -D_RUST_STAGE$(2)
54-
RUNTIME_CXXFLAGS_$(1)_$(2) = -D_RUST_STAGE$(2)
55-
56-
RUNTIME_CXXS_$(1)_$(2) := \
51+
RUNTIME_CXXS_$(1) := \
5752
rt/sync/timer.cpp \
5853
rt/sync/lock_and_signal.cpp \
5954
rt/sync/rust_thread.cpp \
@@ -88,70 +83,70 @@ RUNTIME_CXXS_$(1)_$(2) := \
8883
rt/rust_android_dummy.cpp \
8984
rt/rust_test_helpers.cpp
9085

91-
RUNTIME_CS_$(1)_$(2) := rt/linenoise/linenoise.c rt/linenoise/utf8.c
86+
RUNTIME_CS_$(1) := rt/linenoise/linenoise.c rt/linenoise/utf8.c
9287

93-
RUNTIME_S_$(1)_$(2) := rt/arch/$$(HOST_$(1))/_context.S \
94-
rt/arch/$$(HOST_$(1))/ccall.S \
95-
rt/arch/$$(HOST_$(1))/record_sp.S
88+
RUNTIME_S_$(1) := rt/arch/$$(HOST_$(1))/_context.S \
89+
rt/arch/$$(HOST_$(1))/ccall.S \
90+
rt/arch/$$(HOST_$(1))/record_sp.S
9691

9792
ifeq ($$(CFG_WINDOWSY_$(1)), 1)
98-
LIBUV_OSTYPE_$(1)_$(2) := win
99-
LIBUV_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/libuv/libuv.a
93+
LIBUV_OSTYPE_$(1) := win
94+
LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a
10095
else ifeq ($(OSTYPE_$(1)), apple-darwin)
101-
LIBUV_OSTYPE_$(1)_$(2) := mac
102-
LIBUV_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/libuv/libuv.a
96+
LIBUV_OSTYPE_$(1) := mac
97+
LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a
10398
else ifeq ($(OSTYPE_$(1)), unknown-freebsd)
104-
LIBUV_OSTYPE_$(1)_$(2) := unix/freebsd
105-
LIBUV_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/libuv/libuv.a
99+
LIBUV_OSTYPE_$(1) := unix/freebsd
100+
LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a
106101
else ifeq ($(OSTYPE_$(1)), linux-androideabi)
107-
LIBUV_OSTYPE_$(1)_$(2) := unix/android
108-
LIBUV_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/libuv/libuv.a
102+
LIBUV_OSTYPE_$(1) := unix/android
103+
LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a
109104
else
110-
LIBUV_OSTYPE_$(1)_$(2) := unix/linux
111-
LIBUV_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/libuv/libuv.a
105+
LIBUV_OSTYPE_$(1) := unix/linux
106+
LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a
112107
endif
113108

114-
RUNTIME_DEF_$(1)_$(2) := rt/rustrt$(CFG_DEF_SUFFIX_$(1))
115-
RUNTIME_INCS_$(1)_$(2) := -I $$(S)src/rt -I $$(S)src/rt/isaac -I $$(S)src/rt/uthash \
109+
RUNTIME_DEF_$(1) := rt/rustrt$(CFG_DEF_SUFFIX_$(1))
110+
RUNTIME_INCS_$(1) := -I $$(S)src/rt -I $$(S)src/rt/isaac -I $$(S)src/rt/uthash \
116111
-I $$(S)src/rt/arch/$$(HOST_$(1)) \
117112
-I $$(S)src/rt/linenoise \
118113
-I $$(S)src/libuv/include
119-
RUNTIME_OBJS_$(1)_$(2) := $$(RUNTIME_CXXS_$(1)_$(2):rt/%.cpp=rt/$(1)/stage$(2)/%.o) \
120-
$$(RUNTIME_CS_$(1)_$(2):rt/%.c=rt/$(1)/stage$(2)/%.o) \
121-
$$(RUNTIME_S_$(1)_$(2):rt/%.S=rt/$(1)/stage$(2)/%.o)
122-
ALL_OBJ_FILES += $$(RUNTIME_OBJS_$(1)_$(2))
114+
RUNTIME_OBJS_$(1) := $$(RUNTIME_CXXS_$(1):rt/%.cpp=rt/$(1)/%.o) \
115+
$$(RUNTIME_CS_$(1):rt/%.c=rt/$(1)/%.o) \
116+
$$(RUNTIME_S_$(1):rt/%.S=rt/$(1)/%.o)
117+
ALL_OBJ_FILES += $$(RUNTIME_OBJS_$(1))
123118

124-
MORESTACK_OBJ_$(1)_$(2) := rt/$(1)/stage$(2)/arch/$$(HOST_$(1))/morestack.o
125-
ALL_OBJ_FILES += $$(MORESTACK_OBJS_$(1)_$(2))
119+
MORESTACK_OBJ_$(1) := rt/$(1)/arch/$$(HOST_$(1))/morestack.o
120+
ALL_OBJ_FILES += $$(MORESTACK_OBJS_$(1))
126121

127-
RUNTIME_LIBS_$(1)_$(2) := $$(LIBUV_LIB_$(1)_$(2))
122+
RUNTIME_LIBS_$(1) := $$(LIBUV_LIB_$(1))
128123

129-
rt/$(1)/stage$(2)/%.o: rt/%.cpp $$(MKFILE_DEPS)
124+
rt/$(1)/%.o: rt/%.cpp $$(MKFILE_DEPS)
130125
@$$(call E, compile: $$@)
131-
$$(Q)$$(call CFG_COMPILE_CXX_$(1), $$@, $$(RUNTIME_INCS_$(1)_$(2)) \
132-
$$(SNAP_DEFINES) $$(RUNTIME_CXXFLAGS_$(1)_$(2))) $$<
126+
$$(Q)$$(call CFG_COMPILE_CXX_$(1), $$@, $$(RUNTIME_INCS_$(1)) \
127+
$$(SNAP_DEFINES)) $$<
133128

134-
rt/$(1)/stage$(2)/%.o: rt/%.c $$(MKFILE_DEPS)
129+
rt/$(1)/%.o: rt/%.c $$(MKFILE_DEPS)
135130
@$$(call E, compile: $$@)
136-
$$(Q)$$(call CFG_COMPILE_C_$(1), $$@, $$(RUNTIME_INCS_$(1)_$(2)) \
137-
$$(SNAP_DEFINES) $$(RUNTIME_CFLAGS_$(1)_$(2))) $$<
131+
$$(Q)$$(call CFG_COMPILE_C_$(1), $$@, $$(RUNTIME_INCS_$(1)) \
132+
$$(SNAP_DEFINES)) $$<
138133

139-
rt/$(1)/stage$(2)/%.o: rt/%.S $$(MKFILE_DEPS) \
134+
rt/$(1)/%.o: rt/%.S $$(MKFILE_DEPS) \
140135
$$(LLVM_CONFIG_$$(CFG_BUILD_TRIPLE))
141136
@$$(call E, compile: $$@)
142137
$$(Q)$$(call CFG_ASSEMBLE_$(1),$$@,$$<)
143138

144-
rt/$(1)/stage$(2)/arch/$$(HOST_$(1))/libmorestack.a: $$(MORESTACK_OBJ_$(1)_$(2))
139+
rt/$(1)/arch/$$(HOST_$(1))/libmorestack.a: $$(MORESTACK_OBJ_$(1))
145140
@$$(call E, link: $$@)
146141
$$(Q)$(AR_$(1)) rcs $$@ $$<
147142

148-
rt/$(1)/stage$(2)/$(CFG_RUNTIME_$(1)): $$(RUNTIME_OBJS_$(1)_$(2)) $$(MKFILE_DEPS) \
149-
$$(RUNTIME_DEF_$(1)_$(2)) \
150-
$$(RUNTIME_LIBS_$(1)_$(2))
143+
rt/$(1)/$(CFG_RUNTIME_$(1)): $$(RUNTIME_OBJS_$(1)) $$(MKFILE_DEPS) \
144+
$$(RUNTIME_DEF_$(1)) \
145+
$$(RUNTIME_LIBS_$(1))
151146
@$$(call E, link: $$@)
152-
$$(Q)$$(call CFG_LINK_CXX_$(1),$$@, $$(RUNTIME_OBJS_$(1)_$(2)) \
153-
$$(CFG_GCCISH_POST_LIB_FLAGS_$(1)) $$(RUNTIME_LIBS_$(1)_$(2)) \
154-
$$(CFG_LIBUV_LINK_FLAGS_$(1)),$$(RUNTIME_DEF_$(1)_$(2)),$$(CFG_RUNTIME_$(1)))
147+
$$(Q)$$(call CFG_LINK_CXX_$(1),$$@, $$(RUNTIME_OBJS_$(1)) \
148+
$$(CFG_GCCISH_POST_LIB_FLAGS_$(1)) $$(RUNTIME_LIBS_$(1)) \
149+
$$(CFG_LIBUV_LINK_FLAGS_$(1)),$$(RUNTIME_DEF_$(1)),$$(CFG_RUNTIME_$(1)))
155150

156151
# FIXME: For some reason libuv's makefiles can't figure out the
157152
# correct definition of CC on the mingw I'm using, so we are
@@ -170,32 +165,32 @@ endif
170165

171166
# XXX: Shouldn't need platform-specific conditions here
172167
ifdef CFG_WINDOWSY_$(1)
173-
$$(LIBUV_LIB_$(1)_$(2)): $$(LIBUV_DEPS)
168+
$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
174169
$$(Q)$$(MAKE) -C $$(S)src/libuv/ \
175-
builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/stage$(2)/libuv" \
170+
builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \
176171
OS=mingw \
177172
V=$$(VERBOSE)
178173
else ifeq ($(OSTYPE_$(1)), linux-androideabi)
179-
$$(LIBUV_LIB_$(1)_$(2)): $$(LIBUV_DEPS)
174+
$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
180175
$$(Q)$$(MAKE) -C $$(S)src/libuv/ \
181176
CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
182177
LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
183178
CC="$$(CC_$(1))" \
184179
CXX="$$(CXX_$(1))" \
185180
AR="$$(AR_$(1))" \
186181
BUILDTYPE=Release \
187-
builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/stage$(2)/libuv" \
182+
builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \
188183
host=android OS=linux \
189184
V=$$(VERBOSE)
190185
else
191-
$$(LIBUV_LIB_$(1)_$(2)): $$(LIBUV_DEPS)
186+
$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
192187
$$(Q)$$(MAKE) -C $$(S)src/libuv/ \
193188
CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
194189
LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
195190
CC="$$(CC_$(1))" \
196191
CXX="$$(CXX_$(1))" \
197192
AR="$$(AR_$(1))" \
198-
builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/stage$(2)/libuv" \
193+
builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \
199194
V=$$(VERBOSE)
200195
endif
201196

@@ -234,6 +229,5 @@ endif
234229
endef
235230

236231
# Instantiate template for all stages
237-
$(foreach stage,$(STAGES), \
238-
$(foreach target,$(CFG_TARGET_TRIPLES), \
239-
$(eval $(call DEF_RUNTIME_TARGETS,$(target),$(stage)))))
232+
$(foreach target,$(CFG_TARGET_TRIPLES), \
233+
$(eval $(call DEF_RUNTIME_TARGETS,$(target))))

trunk/mk/target.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@
1818
define TARGET_STAGE_N
1919

2020
$$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a: \
21-
rt/$(2)/stage$(1)/arch/$$(HOST_$(2))/libmorestack.a \
21+
rt/$(2)/arch/$$(HOST_$(2))/libmorestack.a \
2222
| $$(TLIB$(1)_T_$(2)_H_$(3))/
2323
@$$(call E, cp: $$@)
2424
$$(Q)cp $$< $$@
2525

2626
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUNTIME_$(2)): \
27-
rt/$(2)/stage$(1)/$(CFG_RUNTIME_$(2)) \
27+
rt/$(2)/$(CFG_RUNTIME_$(2)) \
2828
| $$(TLIB$(1)_T_$(2)_H_$(3))/
2929
@$$(call E, cp: $$@)
3030
$$(Q)cp $$< $$@

trunk/src/librustc/back/link.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,17 @@ pub fn mangle_internal_name_by_type_only(ccx: @CrateContext,
727727
path_name(ccx.sess.ident_of(hash))]);
728728
}
729729

730+
pub fn mangle_internal_name_by_type_and_seq(ccx: @CrateContext,
731+
t: ty::t,
732+
name: &str) -> ~str {
733+
let s = ppaux::ty_to_str(ccx.tcx, t);
734+
let hash = get_symbol_hash(ccx, t);
735+
return mangle(ccx.sess,
736+
~[path_name(ccx.sess.ident_of(s)),
737+
path_name(ccx.sess.ident_of(hash)),
738+
path_name((ccx.names)(name))]);
739+
}
740+
730741
pub fn mangle_internal_name_by_path_and_seq(ccx: @CrateContext,
731742
path: path,
732743
flav: &str) -> ~str {

trunk/src/librustc/middle/trans/foreign.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -845,6 +845,26 @@ pub fn trans_intrinsic(ccx: @CrateContext,
845845
T_ptr(T_nil()));
846846
Store(bcx, morestack_addr, fcx.llretptr.get());
847847
}
848+
~"memcpy32" => {
849+
let dst_ptr = get_param(decl, first_real_arg);
850+
let src_ptr = get_param(decl, first_real_arg + 1);
851+
let size = get_param(decl, first_real_arg + 2);
852+
let align = C_i32(1);
853+
let volatile = C_i1(false);
854+
let llfn = *bcx.ccx().intrinsics.get(
855+
&~"llvm.memcpy.p0i8.p0i8.i32");
856+
Call(bcx, llfn, [dst_ptr, src_ptr, size, align, volatile]);
857+
}
858+
~"memcpy64" => {
859+
let dst_ptr = get_param(decl, first_real_arg);
860+
let src_ptr = get_param(decl, first_real_arg + 1);
861+
let size = get_param(decl, first_real_arg + 2);
862+
let align = C_i32(1);
863+
let volatile = C_i1(false);
864+
let llfn = *bcx.ccx().intrinsics.get(
865+
&~"llvm.memcpy.p0i8.p0i8.i64");
866+
Call(bcx, llfn, [dst_ptr, src_ptr, size, align, volatile]);
867+
}
848868
~"memmove32" => {
849869
let dst_ptr = get_param(decl, first_real_arg);
850870
let src_ptr = get_param(decl, first_real_arg + 1);

trunk/src/librustc/middle/trans/glue.rs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -683,12 +683,7 @@ pub fn declare_tydesc(ccx: @CrateContext, t: ty::t) -> @mut tydesc_info {
683683
let llsize = llsize_of(ccx, llty);
684684
let llalign = llalign_of(ccx, llty);
685685
let addrspace = declare_tydesc_addrspace(ccx, t);
686-
// FIXME #6574: this triggers duplicate LLVM symbols
687-
let name = @(if false /*ccx.sess.opts.debuginfo*/ {
688-
mangle_internal_name_by_type_only(ccx, t, "tydesc")
689-
} else {
690-
mangle_internal_name_by_seq(ccx, "tydesc")
691-
});
686+
let name = @mangle_internal_name_by_type_and_seq(ccx, t, "tydesc");
692687
note_unique_llvm_symbol(ccx, name);
693688
debug!("+++ declare_tydesc %s %s", ppaux::ty_to_str(ccx.tcx, t), *name);
694689
let gvar = str::as_c_str(*name, |buf| {
@@ -717,12 +712,7 @@ pub fn declare_generic_glue(ccx: @CrateContext, t: ty::t, llfnty: TypeRef,
717712
name: ~str) -> ValueRef {
718713
let _icx = ccx.insn_ctxt("declare_generic_glue");
719714
let name = name;
720-
// FIXME #6574 this triggers duplicate LLVM symbols
721-
let fn_nm = @(if false /*ccx.sess.opts.debuginfo*/ {
722-
mangle_internal_name_by_type_only(ccx, t, (~"glue_" + name))
723-
} else {
724-
mangle_internal_name_by_seq(ccx, (~"glue_" + name))
725-
});
715+
let fn_nm = @mangle_internal_name_by_type_and_seq(ccx, t, (~"glue_" + name));
726716
debug!("%s is for type %s", *fn_nm, ppaux::ty_to_str(ccx.tcx, t));
727717
note_unique_llvm_symbol(ccx, fn_nm);
728718
let llfn = decl_cdecl_fn(ccx.llmod, *fn_nm, llfnty);

trunk/src/librustc/middle/trans/type_use.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ pub fn type_uses_for(ccx: @CrateContext, fn_id: def_id, n_tps: uint)
135135
~"visit_tydesc" | ~"forget" | ~"frame_address" |
136136
~"morestack_addr" => 0,
137137

138-
~"memmove32" | ~"memmove64" => 0,
138+
~"memcpy32" | ~"memcpy64" | ~"memmove32" | ~"memmove64" => 0,
139139

140140
~"sqrtf32" | ~"sqrtf64" | ~"powif32" | ~"powif64" |
141141
~"sinf32" | ~"sinf64" | ~"cosf32" | ~"cosf64" |

0 commit comments

Comments
 (0)