From 5ebb91f24d84391f6c821c54fb8c497964eac6c3 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 2 Mar 2011 16:31:20 -0800 Subject: rustc: Teach iter_structural_ty about dynamically-sized tuples and records --- src/comp/middle/trans.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/comp') diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index 2258ee18..f58fe188 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -1596,8 +1596,10 @@ fn iter_structural_ty_full(@block_ctxt cx, case (ty.ty_tup(?args)) { let int i = 0; for (@ty.t arg in args) { - auto elt_a = r.bcx.build.GEP(av, vec(C_int(0), C_int(i))); - auto elt_b = r.bcx.build.GEP(bv, vec(C_int(0), C_int(i))); + r = GEP_tup_like(r.bcx, t, av, vec(0, i)); + auto elt_a = r.val; + r = GEP_tup_like(r.bcx, t, bv, vec(0, i)); + auto elt_b = r.val; r = f(r.bcx, load_scalar_or_boxed(r.bcx, elt_a, arg), load_scalar_or_boxed(r.bcx, elt_b, arg), @@ -1608,8 +1610,10 @@ fn iter_structural_ty_full(@block_ctxt cx, case (ty.ty_rec(?fields)) { let int i = 0; for (ty.field fld in fields) { - auto llfld_a = r.bcx.build.GEP(av, vec(C_int(0), C_int(i))); - auto llfld_b = r.bcx.build.GEP(bv, vec(C_int(0), C_int(i))); + r = GEP_tup_like(r.bcx, t, av, vec(0, i)); + auto llfld_a = r.val; + r = GEP_tup_like(r.bcx, t, bv, vec(0, i)); + auto llfld_b = r.val; r = f(r.bcx, load_scalar_or_boxed(r.bcx, llfld_a, fld.ty), load_scalar_or_boxed(r.bcx, llfld_b, fld.ty), -- cgit v1.2.3