gollvm: struct type debug info fixes
The struct member size/align/offset information being emitted into the
debug meta-data entries for struct types was incorrect -- the LLVM
interfaces expected sizes in bits and the bridge code was providing
the sizes in bytes.
Change-Id: Ic57b595a0d072ca1c398fcfaf3e1a222acfebee2
Reviewed-on: https://go-review.googlesource.com/46420
Reviewed-by: Cherry Zhang <cherryyz@google.com>
diff --git a/llvm-gofrontend/go-llvm-typemanager.cpp b/llvm-gofrontend/go-llvm-typemanager.cpp
index 8abbe5b..3d70607 100644
--- a/llvm-gofrontend/go-llvm-typemanager.cpp
+++ b/llvm-gofrontend/go-llvm-typemanager.cpp
@@ -1665,9 +1665,9 @@
for (unsigned fidx = 0; fidx < bst->fields().size(); ++fidx) {
const Backend::Btyped_identifier &field = fields[fidx];
llvm::DIType *fieldType = buildDIType(field.btype, helper);
- uint64_t memberBits = typeSize(field.btype);
- uint32_t memberAlign = typeFieldAlignment(field.btype);
- uint64_t memberOffset = typeFieldOffset(bst, fidx);
+ uint64_t memberBits = typeSize(field.btype) * 8;
+ uint32_t memberAlign = typeFieldAlignment(field.btype) * 8;
+ uint64_t memberOffset = typeFieldOffset(bst, fidx) * 8;
unsigned lineNumber = helper.linemap()->location_line(field.location);
llvm::DIDerivedType *ft =
dibuilder.createMemberType(scope, field.name, file, lineNumber,