Skip to content

Commit 8cb6075

Browse files
committed
---
yaml --- r: 46793 b: refs/heads/auto c: 8a17066 h: refs/heads/master i: 46791: ef8db3f v: v3
1 parent 0e00026 commit 8cb6075

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
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: 5e2302a56f7615b73e42daaa242da4bd64b25d93
17+
refs/heads/auto: 8a1706610b2cf458fe6e5ed12e227e3ca9dcaa6d

branches/auto/src/librustc/middle/trans/adt.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -205,24 +205,28 @@ pub fn trans_GEP(bcx: block, r: &Repr, val: ValueRef, discr: int, ix: uint)
205205
NoDtor => val,
206206
DtorPresent | DtorAbsent => GEPi(bcx, val, [0, 0])
207207
};
208-
struct_GEP(bcx, st, val, ix)
208+
struct_GEP(bcx, st, val, ix, false)
209209
}
210210
General(ref cases) => {
211211
struct_GEP(bcx, &cases[discr as uint],
212-
GEPi(bcx, val, [0, 1]), ix)
212+
GEPi(bcx, val, [0, 1]), ix, true)
213213
}
214214
}
215215
}
216216

217-
fn struct_GEP(bcx: block, st: &Struct, val: ValueRef, ix: uint)
218-
-> ValueRef {
217+
fn struct_GEP(bcx: block, st: &Struct, val: ValueRef, ix: uint,
218+
needs_cast: bool) -> ValueRef {
219219
let ccx = bcx.ccx();
220220

221-
let real_llty = T_struct(st.fields.map(
222-
|&ty| type_of::type_of(ccx, ty)));
223-
let cast_val = PointerCast(bcx, val, T_ptr(real_llty));
221+
let val = if needs_cast {
222+
let real_llty = T_struct(st.fields.map(
223+
|&ty| type_of::type_of(ccx, ty)));
224+
PointerCast(bcx, val, T_ptr(real_llty))
225+
} else {
226+
val
227+
};
224228

225-
GEPi(bcx, cast_val, [0, ix])
229+
GEPi(bcx, val, [0, ix])
226230
}
227231

228232
pub fn trans_const(ccx: @CrateContext, r: &Repr, discr: int,

0 commit comments

Comments
 (0)