mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-18 12:29:21 +00:00
Add support for function types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28874 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6cee033a80
commit
650f609734
@ -1402,6 +1402,23 @@ DIE *DwarfWriter::NewType(DIE *Context, TypeDesc *TyDesc, CompileUnit *Unit) {
|
||||
|
||||
break;
|
||||
}
|
||||
case DW_TAG_subroutine_type: {
|
||||
// Add prototype flag.
|
||||
Ty->AddUInt(DW_AT_prototyped, DW_FORM_flag, 1);
|
||||
// Add return type.
|
||||
Ty->AddDIEntry(DW_AT_type, DW_FORM_ref4,
|
||||
NewType(Context, cast<TypeDesc>(Elements[0]), Unit));
|
||||
|
||||
// Add arguments.
|
||||
for(unsigned i = 1, N = Elements.size(); i < N; ++i) {
|
||||
DIE *Arg = new DIE(DW_TAG_formal_parameter);
|
||||
Arg->AddDIEntry(DW_AT_type, DW_FORM_ref4,
|
||||
NewType(Context, cast<TypeDesc>(Elements[i]), Unit));
|
||||
Ty->AddChild(Arg);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
@ -493,7 +493,8 @@ DebugInfoDesc *DebugInfoDesc::DescFactory(unsigned Tag) {
|
||||
case DW_TAG_structure_type:
|
||||
case DW_TAG_union_type:
|
||||
case DW_TAG_enumeration_type:
|
||||
case DW_TAG_vector_type: return new CompositeTypeDesc(Tag);
|
||||
case DW_TAG_vector_type:
|
||||
case DW_TAG_subroutine_type: return new CompositeTypeDesc(Tag);
|
||||
case DW_TAG_subrange_type: return new SubrangeDesc();
|
||||
case DW_TAG_enumerator: return new EnumeratorDesc();
|
||||
case DW_TAG_return_variable:
|
||||
@ -831,6 +832,7 @@ bool CompositeTypeDesc::classof(const DebugInfoDesc *D) {
|
||||
case DW_TAG_union_type:
|
||||
case DW_TAG_enumeration_type:
|
||||
case DW_TAG_vector_type:
|
||||
case DW_TAG_subroutine_type:
|
||||
return true;
|
||||
default: break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user