diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs index 26d2e02cb9631d25bfe08b5dc6195dd492ab1a6d..ca934d755b4262534b73972cfb94311f4907a492 100644 --- a/src/librustc/middle/trans/base.rs +++ b/src/librustc/middle/trans/base.rs @@ -689,10 +689,11 @@ fn iter_variant(cx: block, a_tup: ValueRef, cx = tvec::iter_vec_raw(cx, base, t, len, f); } ty::ty_tup(args) => { - for vec::eachi(args) |i, arg| { - let llfld_a = GEPi(cx, av, [0u, i]); - cx = f(cx, llfld_a, *arg); - } + let repr = adt::represent_type(cx.ccx(), t); + for vec::eachi(args) |i, arg| { + let llfld_a = adt::trans_GEP(cx, &repr, av, 0, i); + cx = f(cx, llfld_a, *arg); + } } ty::ty_enum(tid, ref substs) => { let variants = ty::enum_variants(cx.tcx(), tid);