Pipe through source file locations of structure element declarations; these are now supplied to the llvm::DIBuilder::createMemberType() method rather than giving it the position of the overall struct declaration for each one. Fixes issue #31

This commit is contained in:
Matt Pharr
2011-06-29 05:38:42 +01:00
parent 86de910ecd
commit cb58c78c1a
5 changed files with 41 additions and 27 deletions

View File

@@ -564,9 +564,11 @@ struct_or_union_specifier
{
std::vector<const Type *> elementTypes;
std::vector<std::string> elementNames;
GetStructTypesAndNames(*$4, &elementTypes, &elementNames);
std::vector<SourcePos> elementPositions;
GetStructTypesNamesPositions(*$4, &elementTypes, &elementNames,
&elementPositions);
StructType *st = new StructType($2, elementTypes, elementNames,
false, true, @2);
elementPositions, false, true, @2);
m->symbolTable->AddType($2, st, @2);
$$ = st;
}
@@ -574,8 +576,11 @@ struct_or_union_specifier
{
std::vector<const Type *> elementTypes;
std::vector<std::string> elementNames;
GetStructTypesAndNames(*$3, &elementTypes, &elementNames);
$$ = new StructType("", elementTypes, elementNames, false, true, @1);
std::vector<SourcePos> elementPositions;
GetStructTypesNamesPositions(*$3, &elementTypes, &elementNames,
&elementPositions);
$$ = new StructType("", elementTypes, elementNames, elementPositions,
false, true, @1);
}
| struct_or_union '{' '}'
{