Appropriately mark fowrad decls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62625 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devang Patel 2009-01-20 22:27:02 +00:00
parent eeb90e3094
commit 2a574669f3
3 changed files with 18 additions and 12 deletions

View File

@ -129,6 +129,13 @@ namespace llvm {
/// FIXME: Types should be factored much better so that CV qualifiers and
/// others do not require a huge and empty descriptor full of zeros.
class DIType : public DIDescriptor {
public:
enum {
FlagPrivate = 1 << 0,
FlagProtected = 1 << 1,
FlagFwdDecl = 1 << 2
};
protected:
DIType(GlobalVariable *GV, unsigned Tag) : DIDescriptor(GV, Tag) {}
// This ctor is used when the Tag has already been validated by a derived
@ -167,6 +174,9 @@ namespace llvm {
// carry this is just plain insane.
uint64_t getOffsetInBits() const { return getUInt64Field(7); }
unsigned getFlags() const { return getUnsignedField(8); }
bool isPrivate() const { return (getFlags() & FlagPrivate) != 0; }
bool isProtected() const { return (getFlags() & FlagProtected) != 0; }
bool isForwardDecl() const { return (getFlags() & FlagFwdDecl) != 0; }
virtual std::string getFilename() const {
assert (0 && "Invalid DIDescriptor");

View File

@ -1820,19 +1820,16 @@ private:
if (Size)
AddUInt(&Buffer, DW_AT_byte_size, 0, Size);
else {
// Add zero size even if it is not a forward declaration.
// FIXME - Enable this.
// if (!CTy.isDefinition())
// AddUInt(&Buffer, DW_AT_declaration, DW_FORM_flag, 1);
// else
// AddUInt(&Buffer, DW_AT_byte_size, 0, 0);
// Add zero size if it is not a forward declaration.
if (CTy.isForwardDecl())
AddUInt(&Buffer, DW_AT_declaration, DW_FORM_flag, 1);
else
AddUInt(&Buffer, DW_AT_byte_size, 0, 0);
}
// Add source line info if available and TyDesc is not a forward
// declaration.
// FIXME - Enable this.
// if (CTy.isForwardDecl())
// AddSourceLine(&Buffer, *CTy);
// Add source line info if available.
if (!CTy.isForwardDecl())
AddSourceLine(&Buffer, &CTy);
}
// ConstructSubrangeDIE - Construct subrange DIE from DISubrange.

View File

@ -1,5 +1,4 @@
; RUN: llvm-as < %s | llc | %prcontext ST 1 | grep 0x1 | count 1
; XFAIL: *
target triple = "i386-apple-darwin9.6"
%llvm.dbg.anchor.type = type { i32, i32 }