Skip to content

Commit eb029f9

Browse files
committed
---
yaml --- r: 6815 b: refs/heads/master c: 0752252 h: refs/heads/master i: 6813: 109e586 6811: 4219192 6807: 251558a 6799: d76ae78 6783: d3cdcbd v: v3
1 parent b9b2e82 commit eb029f9

File tree

2 files changed

+24
-21
lines changed

2 files changed

+24
-21
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 1da4b3b987f4d6be09dafa23e63978a36f677b00
2+
refs/heads/master: 0752252737d530db5b81ebd3127c622f6ec92712

trunk/src/comp/middle/debuginfo.rs

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import std::{vec, str, option, unsafe, fs};
1+
import std::{vec, str, option, unsafe, fs, sys};
22
import std::map::hashmap;
33
import lib::llvm::llvm;
44
import lib::llvm::llvm::ValueRef;
@@ -221,24 +221,27 @@ fn get_ty_metadata(cx: @crate_ctxt, t: ty::t, ty: @ast::ty) -> @metadata<tydesc_
221221
option::some(md) { ret md; }
222222
option::none. {}
223223
}
224-
let (name, size, encoding) = alt ty.node {
225-
ast::ty_bool. { ("bool", 1, DW_ATE_boolean) }
226-
ast::ty_int. { ("int", 32, DW_ATE_signed) } //XXX machine-dependent?
227-
ast::ty_uint. { ("uint", 32, DW_ATE_unsigned) } //XXX machine-dependent?
228-
ast::ty_float. { ("float", 32, DW_ATE_float) } //XXX machine-dependent?
224+
fn size_and_align_of<T>() -> (int, int) {
225+
(sys::size_of::<T>() as int, sys::align_of::<T>() as int)
226+
}
227+
let (name, (size, align), encoding) = alt ty.node {
228+
ast::ty_bool. {("bool", size_and_align_of::<bool>(), DW_ATE_boolean)}
229+
ast::ty_int. {("int", size_and_align_of::<int>(), DW_ATE_signed)}
230+
ast::ty_uint. {("uint", size_and_align_of::<uint>(), DW_ATE_unsigned)}
231+
ast::ty_float. {("float", size_and_align_of::<float>(), DW_ATE_float)}
229232
ast::ty_machine(m) { alt m {
230-
ast::ty_i8. { ("i8", 1, DW_ATE_signed_char) }
231-
ast::ty_i16. { ("i16", 16, DW_ATE_signed) }
232-
ast::ty_i32. { ("i32", 32, DW_ATE_signed) }
233-
ast::ty_i64. { ("i64", 64, DW_ATE_signed) }
234-
ast::ty_u8. { ("u8", 8, DW_ATE_unsigned_char) }
235-
ast::ty_u16. { ("u16", 16, DW_ATE_unsigned) }
236-
ast::ty_u32. { ("u32", 32, DW_ATE_unsigned) }
237-
ast::ty_u64. { ("u64", 64, DW_ATE_unsigned) }
238-
ast::ty_f32. { ("f32", 32, DW_ATE_float) }
239-
ast::ty_f64. { ("f64", 64, DW_ATE_float) }
233+
ast::ty_i8. {("i8", size_and_align_of::<i8>(), DW_ATE_signed_char)}
234+
ast::ty_i16. {("i16", size_and_align_of::<i16>(), DW_ATE_signed)}
235+
ast::ty_i32. {("i32", size_and_align_of::<i32>(), DW_ATE_signed)}
236+
ast::ty_i64. {("i64", size_and_align_of::<i64>(), DW_ATE_signed)}
237+
ast::ty_u8. {("u8", size_and_align_of::<u8>(), DW_ATE_unsigned_char)}
238+
ast::ty_u16. {("u16", size_and_align_of::<u16>(), DW_ATE_unsigned)}
239+
ast::ty_u32. {("u32", size_and_align_of::<u32>(), DW_ATE_unsigned)}
240+
ast::ty_u64. {("u64", size_and_align_of::<u64>(), DW_ATE_unsigned)}
241+
ast::ty_f32. {("f32", size_and_align_of::<f32>(), DW_ATE_float)}
242+
ast::ty_f64. {("f64", size_and_align_of::<f64>(), DW_ATE_float)}
240243
} }
241-
ast::ty_char. { ("char", 32, DW_ATE_unsigned) }
244+
ast::ty_char. {("char", size_and_align_of::<char>(), DW_ATE_unsigned)}
242245
};
243246
let fname = filename_from_span(cx, ty.span);
244247
let file_node = get_file_metadata(cx, fname);
@@ -247,9 +250,9 @@ fn get_ty_metadata(cx: @crate_ctxt, t: ty::t, ty: @ast::ty) -> @metadata<tydesc_
247250
cu_node.node,
248251
llstr(name),
249252
file_node.node,
250-
lli32(0), //XXX basic types only
251-
lli64(size),
252-
lli64(32), //XXX alignment?
253+
lli32(0), //XXX source line
254+
lli64(size * 8), // size in bits
255+
lli64(align * 8), // alignment in bits
253256
lli64(0), //XXX offset?
254257
lli32(0), //XXX flags?
255258
lli32(encoding)];

0 commit comments

Comments
 (0)