Skip to content

Commit 4c0c3a6

Browse files
committed
---
yaml --- r: 1543 b: refs/heads/master c: 3473ff3 h: refs/heads/master i: 1541: 532fd87 1539: 0038235 1535: aa3059a v: v3
1 parent 42b03d7 commit 4c0c3a6

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

[refs]

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 6ed226c6b3a28f3c10d2176d7dba7e339bf0ab99
2+
refs/heads/master: 3473ff3bff2ed2286080812417068552d6b9df31

trunk/src/Makefile

-1
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,6 @@ TEST_XFAILS_RUSTC := $(addprefix test/run-pass/, \
453453
foreach-simple-outer-slot.rs \
454454
generic-fn-twice.rs \
455455
generic-iter-frame.rs \
456-
generic-recursive-tag.rs \
457456
generic-tag-alt.rs \
458457
generic-tag-values.rs \
459458
iter-range.rs \

trunk/src/comp/middle/trans.rs

+16-4
Original file line numberDiff line numberDiff line change
@@ -1053,6 +1053,9 @@ fn dynamic_align_of(@block_ctxt cx, @ty.t t) -> result {
10531053
}
10541054
ret res(bcx, a);
10551055
}
1056+
case (ty.ty_tag(_, _)) {
1057+
ret res(cx, C_int(1)); // FIXME: stub
1058+
}
10561059
}
10571060
}
10581061

@@ -1805,12 +1808,21 @@ fn iter_structural_ty_full(@block_ctxt cx,
18051808
auto variants = tag_variants(cx.fcx.ccx, tid);
18061809
auto n_variants = _vec.len[ast.variant](variants);
18071810

1808-
auto lldiscrim_a_ptr = cx.build.GEP(av, vec(C_int(0), C_int(0)));
1809-
auto llunion_a_ptr = cx.build.GEP(av, vec(C_int(0), C_int(1)));
1811+
// Cast the tags to types we can GEP into.
1812+
auto lltagty = T_opaque_tag_ptr(cx.fcx.ccx.tn);
1813+
auto av_tag = cx.build.PointerCast(av, lltagty);
1814+
auto bv_tag = cx.build.PointerCast(bv, lltagty);
1815+
1816+
auto lldiscrim_a_ptr = cx.build.GEP(av_tag,
1817+
vec(C_int(0), C_int(0)));
1818+
auto llunion_a_ptr = cx.build.GEP(av_tag,
1819+
vec(C_int(0), C_int(1)));
18101820
auto lldiscrim_a = cx.build.Load(lldiscrim_a_ptr);
18111821

1812-
auto lldiscrim_b_ptr = cx.build.GEP(bv, vec(C_int(0), C_int(0)));
1813-
auto llunion_b_ptr = cx.build.GEP(bv, vec(C_int(0), C_int(1)));
1822+
auto lldiscrim_b_ptr = cx.build.GEP(bv_tag,
1823+
vec(C_int(0), C_int(0)));
1824+
auto llunion_b_ptr = cx.build.GEP(bv_tag,
1825+
vec(C_int(0), C_int(1)));
18141826
auto lldiscrim_b = cx.build.Load(lldiscrim_b_ptr);
18151827

18161828
// NB: we must hit the discriminant first so that structural

0 commit comments

Comments
 (0)