@@ -122,11 +122,10 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
122
122
Float => 4 ,
123
123
Double => 8 ,
124
124
Struct => {
125
+ let str_tys = ty. field_types ( ) ;
125
126
if ty. is_packed ( ) {
126
- let str_tys = ty. field_types ( ) ;
127
127
str_tys. iter ( ) . fold ( 0 , |s, t| s + ty_size ( * t) )
128
128
} else {
129
- let str_tys = ty. field_types ( ) ;
130
129
let size = str_tys. iter ( ) . fold ( 0 , |s, t| align ( s, * t) + ty_size ( * t) ) ;
131
130
align ( size, ty)
132
131
}
@@ -236,9 +235,7 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
236
235
let mut i = 0 u;
237
236
let ty_kind = ty. kind ( ) ;
238
237
let e = cls. len ( ) ;
239
- if cls. len ( ) > 2 u &&
240
- ( ty_kind == Struct ||
241
- ty_kind == Array ) {
238
+ if cls. len ( ) > 2 u && ( ty_kind == Struct || ty_kind == Array ) {
242
239
if cls[ i] . is_sse ( ) {
243
240
i += 1 u;
244
241
while i < e {
@@ -265,7 +262,7 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
265
262
return ;
266
263
}
267
264
if cls[ i] == SSEUp {
268
- cls[ i] = SSEInt ;
265
+ cls[ i] = SSEDv ;
269
266
} else if cls[ i] . is_sse ( ) {
270
267
i += 1 ;
271
268
while i != e && cls[ i] == SSEUp { i += 1 u; }
@@ -283,7 +280,6 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
283
280
let mut cls = vec:: from_elem ( words, NoClass ) ;
284
281
if words > 4 {
285
282
all_mem ( cls) ;
286
- let cls = cls;
287
283
return cls;
288
284
}
289
285
classify ( ty, cls, 0 , 0 ) ;
@@ -312,8 +308,8 @@ fn llreg_ty(cls: &[RegClass]) -> Type {
312
308
tys. push ( Type :: i64 ( ) ) ;
313
309
}
314
310
SSEFv => {
315
- let vec_len = llvec_len ( cls. tailn ( i + 1 u) ) * 2 u ;
316
- let vec_ty = Type :: vector ( & Type :: f32 ( ) , vec_len as u64 ) ;
311
+ let vec_len = llvec_len ( cls. tailn ( i + 1 u) ) ;
312
+ let vec_ty = Type :: vector ( & Type :: f32 ( ) , ( vec_len * 2 u ) as u64 ) ;
317
313
tys. push ( vec_ty) ;
318
314
i += vec_len;
319
315
loop ;
0 commit comments