Reverting an entire stack of changes causing build failures

This commit is contained in:
YASHASVI KHATAVKAR 2022-02-10 17:58:03 -05:00
parent f3a2cfc103
commit 93d1a623ce
4 changed files with 0 additions and 77 deletions

View File

@ -1087,10 +1087,6 @@ a Fortran front-end would generate the following descriptors:
!DILocalVariable(name: "string", arg: 1, scope: !10, file: !3, line: 4, type: !15) !DILocalVariable(name: "string", arg: 1, scope: !10, file: !3, line: 4, type: !15)
!DIStringType(name: "character(*)!2", stringLength: !16, stringLengthExpression: !DIExpression(), size: 32) !DIStringType(name: "character(*)!2", stringLength: !16, stringLengthExpression: !DIExpression(), size: 32)
A fortran deferred-length character can also contain the information of raw storage of the characters in addition to the length of the string. This information is encoded in the stringLocationExpression field. Based on this information, DW_AT_data_location attribute is emitted in a DW_TAG_string_type debug info.
!DIStringType(name: "character(*)!2", stringLengthExpression: !DIExpression(), stringLocationExpression: !DIExpression(DW_OP_push_object_address, DW_OP_deref), size: 32)
and this will materialize in DWARF tags as: and this will materialize in DWARF tags as:
.. code-block:: text .. code-block:: text
@ -1101,7 +1097,6 @@ and this will materialize in DWARF tags as:
0x00000064: DW_TAG_variable 0x00000064: DW_TAG_variable
DW_AT_location (DW_OP_fbreg +16) DW_AT_location (DW_OP_fbreg +16)
DW_AT_type (0x00000083 "integer*8") DW_AT_type (0x00000083 "integer*8")
DW_AT_data_location (DW_OP_push_object_address, DW_OP_deref)
... ...
DW_AT_artificial (true) DW_AT_artificial (true)

View File

@ -221,23 +221,6 @@ namespace llvm {
/// \param SizeInBits Size of the type. /// \param SizeInBits Size of the type.
DIStringType *createStringType(StringRef Name, uint64_t SizeInBits); DIStringType *createStringType(StringRef Name, uint64_t SizeInBits);
/// Create debugging information entry for Fortran
/// assumed length string type.
/// \param Name Type name.
/// \param StringLength String length expressed as DIVariable *.
/// \param StrLocationExp Optional memory location of the string.
DIStringType *createStringType(StringRef Name, DIVariable *StringLength,
DIExpression *StrLocationExp = nullptr);
/// Create debugging information entry for Fortran
/// assumed length string type.
/// \param Name Type name.
/// \param StringLengthExp String length expressed in DIExpression form.
/// \param StrLocationExp Optional memory location of the string.
DIStringType *createStringType(StringRef Name,
DIExpression *StringLengthExp,
DIExpression *StrLocationExp = nullptr);
/// Create debugging information entry for a qualified /// Create debugging information entry for a qualified
/// type, e.g. 'const int'. /// type, e.g. 'const int'.
/// \param Tag Tag identifing type, e.g. dwarf::TAG_volatile_type /// \param Tag Tag identifing type, e.g. dwarf::TAG_volatile_type

View File

@ -293,22 +293,6 @@ DIStringType *DIBuilder::createStringType(StringRef Name, uint64_t SizeInBits) {
SizeInBits, 0); SizeInBits, 0);
} }
DIStringType *DIBuilder::createStringType(StringRef Name,
DIVariable *StringLength,
DIExpression *StrLocationExp) {
assert(!Name.empty() && "Unable to create type without name");
return DIStringType::get(VMContext, dwarf::DW_TAG_string_type, Name,
StringLength, nullptr, StrLocationExp, 0, 0, 0);
}
DIStringType *DIBuilder::createStringType(StringRef Name,
DIExpression *StringLengthExp,
DIExpression *StrLocationExp) {
assert(!Name.empty() && "Unable to create type without name");
return DIStringType::get(VMContext, dwarf::DW_TAG_string_type, Name, nullptr,
StringLengthExp, StrLocationExp, 0, 0, 0);
}
DIDerivedType *DIBuilder::createQualifiedType(unsigned Tag, DIType *FromTy) { DIDerivedType *DIBuilder::createQualifiedType(unsigned Tag, DIType *FromTy) {
return DIDerivedType::get(VMContext, Tag, "", nullptr, 0, nullptr, FromTy, 0, return DIDerivedType::get(VMContext, Tag, "", nullptr, 0, nullptr, FromTy, 0,
0, 0, None, DINode::FlagZero); 0, 0, None, DINode::FlagZero);

View File

@ -247,45 +247,6 @@ TEST(DIBuilder, CreateSetType) {
EXPECT_TRUE(isa_and_nonnull<DIDerivedType>(SetType)); EXPECT_TRUE(isa_and_nonnull<DIDerivedType>(SetType));
} }
TEST(DIBuilder, CreateStringType) {
LLVMContext Ctx;
std::unique_ptr<Module> M(new Module("MyModule", Ctx));
DIBuilder DIB(*M);
DIScope *Scope = DISubprogram::getDistinct(
Ctx, nullptr, "", "", nullptr, 0, nullptr, 0, nullptr, 0, 0,
DINode::FlagZero, DISubprogram::SPFlagZero, nullptr);
DIFile *F = DIB.createFile("main.c", "/");
StringRef StrName = "string";
DIVariable *StringLen = DIB.createAutoVariable(Scope, StrName, F, 0, nullptr,
false, DINode::FlagZero, 0);
auto getDIExpression = [&DIB](int offset) {
SmallVector<uint64_t, 4> ops;
ops.push_back(llvm::dwarf::DW_OP_push_object_address);
DIExpression::appendOffset(ops, offset);
ops.push_back(llvm::dwarf::DW_OP_deref);
return DIB.createExpression(ops);
};
DIExpression *StringLocationExp = getDIExpression(1);
DIStringType *StringType =
DIB.createStringType(StrName, StringLen, StringLocationExp);
EXPECT_TRUE(isa_and_nonnull<DIStringType>(StringType));
EXPECT_EQ(StringType->getName(), StrName);
EXPECT_EQ(StringType->getStringLength(), StringLen);
EXPECT_EQ(StringType->getStringLocationExp(), StringLocationExp);
StringRef StrNameExp = "stringexp";
DIExpression *StringLengthExp = getDIExpression(2);
DIStringType *StringTypeExp =
DIB.createStringType(StrNameExp, StringLengthExp, StringLocationExp);
EXPECT_TRUE(isa_and_nonnull<DIStringType>(StringTypeExp));
EXPECT_EQ(StringTypeExp->getName(), StrNameExp);
EXPECT_EQ(StringTypeExp->getStringLocationExp(), StringLocationExp);
EXPECT_EQ(StringTypeExp->getStringLengthExp(), StringLengthExp);
}
TEST(DIBuilder, DIEnumerator) { TEST(DIBuilder, DIEnumerator) {
LLVMContext Ctx; LLVMContext Ctx;
std::unique_ptr<Module> M(new Module("MyModule", Ctx)); std::unique_ptr<Module> M(new Module("MyModule", Ctx));