[DWARFASTParser] Remove special cases for `llvm-gcc`

Reviewed by: aprantl, labath.

Differential Revision:  https://reviews.llvm.org/D48500

llvm-svn: 338638
This commit is contained in:
Davide Italiano 2018-08-01 21:13:45 +00:00
parent f4590de992
commit 6699fc34dd
1 changed files with 3 additions and 26 deletions

View File

@ -307,14 +307,7 @@ TypeSP DWARFASTParserClang::ParseTypeFromDWARF(const SymbolContext &sc,
decl.SetColumn(form_value.Unsigned());
break;
case DW_AT_name:
type_name_cstr = form_value.AsCString();
// Work around a bug in llvm-gcc where they give a name to a
// reference type which doesn't include the "&"...
if (tag == DW_TAG_reference_type) {
if (strchr(type_name_cstr, '&') == NULL)
type_name_cstr = NULL;
}
if (type_name_cstr)
type_name_const_str.SetCString(type_name_cstr);
break;
@ -558,16 +551,9 @@ TypeSP DWARFASTParserClang::ParseTypeFromDWARF(const SymbolContext &sc,
if (attributes.ExtractFormValueAtIndex(i, form_value)) {
switch (attr) {
case DW_AT_decl_file:
if (die.GetCU()->DW_AT_decl_file_attributes_are_invalid()) {
// llvm-gcc outputs invalid DW_AT_decl_file attributes that
// always point to the compile unit file, so we clear this
// invalid value so that we can still unique types
// efficiently.
decl.SetFile(FileSpec("<invalid>", false));
} else
decl.SetFile(
sc.comp_unit->GetSupportFiles().GetFileSpecAtIndex(
form_value.Unsigned()));
decl.SetFile(
sc.comp_unit->GetSupportFiles().GetFileSpecAtIndex(
form_value.Unsigned()));
break;
case DW_AT_decl_line:
@ -2977,15 +2963,6 @@ bool DWARFASTParserClang::ParseChildMembers(
class_language == eLanguageTypeObjC_plus_plus)
accessibility = eAccessNone;
if (member_idx == 0 && !is_artificial && name &&
(strstr(name, "_vptr$") == name)) {
// Not all compilers will mark the vtable pointer member as
// artificial (llvm-gcc). We can't have the virtual members in our
// classes otherwise it throws off all child offsets since we end up
// having and extra pointer sized member in our class layouts.
is_artificial = true;
}
// Handle static members
if (is_external && member_byte_offset == UINT32_MAX) {
Type *var_type = die.ResolveTypeUID(DIERef(encoding_form));