Skip to content

Commit 3017343

Browse files
committed
auto merge of #7457 : Blei/rust/fix-ffi-floats, r=cmr
Also contains a fix to help ctag pick up macro definitions.
2 parents df39932 + a2227f9 commit 3017343

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

src/etc/ctags.rust

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88
--regex-rust=/[ \t]*static[ \t]+([a-zA-Z0-9_]+)/\1/m,consts/
99
--regex-rust=/[ \t]*trait[ \t]+([a-zA-Z0-9_]+)/\1/m,traits/
1010
--regex-rust=/[ \t]*impl[ \t]+([a-zA-Z0-9_]+)/\1/m,impls/
11+
--regex-rust=/[ \t]*macro_rules![ \t]+([a-zA-Z0-9_]+)/\1/m,macros/

src/librustc/middle/trans/cabi_x86_64.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,10 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
126126
Float => 4,
127127
Double => 8,
128128
Struct => {
129+
let str_tys = ty.field_types();
129130
if ty.is_packed() {
130-
let str_tys = ty.field_types();
131131
str_tys.iter().fold(0, |s, t| s + ty_size(*t))
132132
} else {
133-
let str_tys = ty.field_types();
134133
let size = str_tys.iter().fold(0, |s, t| align(s, *t) + ty_size(*t));
135134
align(size, ty)
136135
}
@@ -240,9 +239,7 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
240239
let mut i = 0u;
241240
let ty_kind = ty.kind();
242241
let e = cls.len();
243-
if cls.len() > 2u &&
244-
(ty_kind == Struct ||
245-
ty_kind == Array) {
242+
if cls.len() > 2u && (ty_kind == Struct || ty_kind == Array) {
246243
if cls[i].is_sse() {
247244
i += 1u;
248245
while i < e {
@@ -269,7 +266,7 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
269266
return;
270267
}
271268
if cls[i] == SSEUp {
272-
cls[i] = SSEInt;
269+
cls[i] = SSEDv;
273270
} else if cls[i].is_sse() {
274271
i += 1;
275272
while i != e && cls[i] == SSEUp { i += 1u; }
@@ -287,7 +284,6 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
287284
let mut cls = vec::from_elem(words, NoClass);
288285
if words > 4 {
289286
all_mem(cls);
290-
let cls = cls;
291287
return cls;
292288
}
293289
classify(ty, cls, 0, 0);
@@ -316,8 +312,8 @@ fn llreg_ty(cls: &[RegClass]) -> Type {
316312
tys.push(Type::i64());
317313
}
318314
SSEFv => {
319-
let vec_len = llvec_len(cls.tailn(i + 1u)) * 2u;
320-
let vec_ty = Type::vector(&Type::f32(), vec_len as u64);
315+
let vec_len = llvec_len(cls.tailn(i + 1u));
316+
let vec_ty = Type::vector(&Type::f32(), (vec_len * 2u) as u64);
321317
tys.push(vec_ty);
322318
i += vec_len;
323319
loop;

0 commit comments

Comments
 (0)