@@ -126,11 +126,10 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
126
126
Float => 4 ,
127
127
Double => 8 ,
128
128
Struct => {
129
+ let str_tys = ty. field_types ( ) ;
129
130
if ty. is_packed ( ) {
130
- let str_tys = ty. field_types ( ) ;
131
131
str_tys. iter ( ) . fold ( 0 , |s, t| s + ty_size ( * t) )
132
132
} else {
133
- let str_tys = ty. field_types ( ) ;
134
133
let size = str_tys. iter ( ) . fold ( 0 , |s, t| align ( s, * t) + ty_size ( * t) ) ;
135
134
align ( size, ty)
136
135
}
@@ -240,9 +239,7 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
240
239
let mut i = 0 u;
241
240
let ty_kind = ty. kind ( ) ;
242
241
let e = cls. len ( ) ;
243
- if cls. len ( ) > 2 u &&
244
- ( ty_kind == Struct ||
245
- ty_kind == Array ) {
242
+ if cls. len ( ) > 2 u && ( ty_kind == Struct || ty_kind == Array ) {
246
243
if cls[ i] . is_sse ( ) {
247
244
i += 1 u;
248
245
while i < e {
@@ -269,7 +266,7 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
269
266
return ;
270
267
}
271
268
if cls[ i] == SSEUp {
272
- cls[ i] = SSEInt ;
269
+ cls[ i] = SSEDv ;
273
270
} else if cls[ i] . is_sse ( ) {
274
271
i += 1 ;
275
272
while i != e && cls[ i] == SSEUp { i += 1 u; }
@@ -287,7 +284,6 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
287
284
let mut cls = vec:: from_elem ( words, NoClass ) ;
288
285
if words > 4 {
289
286
all_mem ( cls) ;
290
- let cls = cls;
291
287
return cls;
292
288
}
293
289
classify ( ty, cls, 0 , 0 ) ;
@@ -316,8 +312,8 @@ fn llreg_ty(cls: &[RegClass]) -> Type {
316
312
tys. push ( Type :: i64 ( ) ) ;
317
313
}
318
314
SSEFv => {
319
- let vec_len = llvec_len ( cls. tailn ( i + 1 u) ) * 2 u ;
320
- let vec_ty = Type :: vector ( & Type :: f32 ( ) , vec_len as u64 ) ;
315
+ let vec_len = llvec_len ( cls. tailn ( i + 1 u) ) ;
316
+ let vec_ty = Type :: vector ( & Type :: f32 ( ) , ( vec_len * 2 u ) as u64 ) ;
321
317
tys. push ( vec_ty) ;
322
318
i += vec_len;
323
319
loop ;
0 commit comments