Skip to content

Commit 9e01408

Browse files
committed
---
yaml --- r: 166762 b: refs/heads/master c: 5fb1e6b h: refs/heads/master v: v3
1 parent 04b5150 commit 9e01408

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: e6b6234e66539a3e80aa48281ea1b72464eb90df
2+
refs/heads/master: 5fb1e6b1e2952b1205baaa3fc9facaf7f5b34483
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 023dfb0c898d851dee6ace2f8339b73b5287136b
55
refs/heads/try: f5d619caf9f32458680fae55526b99582ca682dd

trunk/src/librustc_trans/trans/adt.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,19 @@ fn find_discr_field_candidate<'tcx>(tcx: &ty::ctxt<'tcx>, ty: Ty<'tcx>) -> Optio
390390
None
391391
},
392392

393+
// Is this a fixed-size array of something non-zero
394+
// with at least one element?
395+
ty::ty_vec(ety, Some(d)) if d > 0 => {
396+
match find_discr_field_candidate(tcx, ety) {
397+
Some(v) => {
398+
let mut discrfield = vec![0];
399+
discrfield.extend(v.into_iter());
400+
return Some(discrfield);
401+
}
402+
None => None
403+
}
404+
},
405+
393406
// Anything else is not a pointer
394407
_ => None
395408
}

0 commit comments

Comments
 (0)