Skip to content

Commit 8311a10

Browse files
committed
---
yaml --- r: 48508 b: refs/heads/snap-stage3 c: 5cbc257 h: refs/heads/master v: v3
1 parent 19a9eea commit 8311a10

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 3bbcac322669cff3abde5be937cc4ec3860f3985
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: b673b26f03043f974682efceffbf40df9cf4bc84
4+
refs/heads/snap-stage3: 5cbc2571c1a4df75750fcb726120db06eb61c1f9
55
refs/heads/try: 2a8fb58d79e685d5ca07b039badcf2ae3ef077ea
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/src/librustc/middle/trans/expr.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ use lib;
126126
use lib::llvm::{ValueRef, TypeRef, llvm, True};
127127
use middle::borrowck::root_map_key;
128128
use middle::trans::_match;
129+
use middle::trans::adt;
129130
use middle::trans::base;
130131
use middle::trans::base::*;
131132
use middle::trans::build::*;
@@ -602,7 +603,8 @@ fn trans_rvalue_dps_unadjusted(bcx: block, expr: @ast::expr,
602603
return trans_rec_or_struct(bcx, (*fields), base, expr.id, dest);
603604
}
604605
ast::expr_tup(ref args) => {
605-
return trans_tup(bcx, *args, dest);
606+
let repr = adt::represent_type(bcx.ccx(), expr_ty(bcx, expr));
607+
return trans_adt(bcx, &repr, 0, *args, dest);
606608
}
607609
ast::expr_lit(@codemap::spanned {node: ast::lit_str(s), _}) => {
608610
return tvec::trans_lit_str(bcx, expr, s, dest);
@@ -1249,7 +1251,8 @@ fn trans_rec_or_struct(bcx: block,
12491251
}
12501252
}
12511253

1252-
fn trans_tup(bcx: block, elts: &[@ast::expr], dest: Dest) -> block {
1254+
fn trans_adt(bcx: block, repr: &adt::Repr, discr: int, elts: &[@ast::expr],
1255+
dest: Dest) -> block {
12531256
let _icx = bcx.insn_ctxt("trans_tup");
12541257
let mut bcx = bcx;
12551258
let addr = match dest {
@@ -1262,8 +1265,9 @@ fn trans_tup(bcx: block, elts: &[@ast::expr], dest: Dest) -> block {
12621265
SaveIn(pos) => pos,
12631266
};
12641267
let mut temp_cleanups = ~[];
1268+
adt::trans_set_discr(bcx, repr, addr, discr);
12651269
for vec::eachi(elts) |i, e| {
1266-
let dest = GEPi(bcx, addr, [0u, i]);
1270+
let dest = adt::trans_GEP(bcx, repr, addr, discr, i);
12671271
let e_ty = expr_ty(bcx, *e);
12681272
bcx = trans_into(bcx, *e, SaveIn(dest));
12691273
add_clean_temp_mem(bcx, dest, e_ty);

0 commit comments

Comments
 (0)