Skip to content

Commit 354c8dd

Browse files
committed
---
yaml --- r: 46799 b: refs/heads/auto c: 5cbc257 h: refs/heads/master i: 46797: f2540aa 46795: d3ed5c6 46791: ef8db3f 46783: cc9f7ca v: v3
1 parent 5404ad5 commit 354c8dd

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
@@ -14,4 +14,4 @@ refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
1414
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1515
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1616
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
17-
refs/heads/auto: b673b26f03043f974682efceffbf40df9cf4bc84
17+
refs/heads/auto: 5cbc2571c1a4df75750fcb726120db06eb61c1f9

branches/auto/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)