Skip to content

Commit 802b22b

Browse files
committed
Revert "[DebugInfo][clang][DWARF5]: Added support for debuginfo generation for defaulted parameters"
The Bitcode/DITemplateParameter-5.0.ll test is failing: FAIL: LLVM :: Bitcode/DITemplateParameter-5.0.ll (5894 of 36324) ******************** TEST 'LLVM :: Bitcode/DITemplateParameter-5.0.ll' FAILED ******************** Script: -- : 'RUN: at line 1'; /usr/local/google/home/thakis/src/llvm-project/out/gn/bin/llvm-dis -o - /usr/local/google/home/thakis/src/llvm-project/llvm/test/Bitcode/DITemplateParameter-5.0.ll.bc | /usr/local/google/home/thakis/src/llvm-project/out/gn/bin/FileCheck /usr/local/google/home/thakis/src/llvm-project/llvm/test/Bitcode/DITemplateParameter-5.0.ll -- Exit Code: 2 Command Output (stderr): -- It looks like the Bitcode/DITemplateParameter-5.0.ll.bc file was never checked in. This reverts commit c2b437d.
1 parent c2b437d commit 802b22b

File tree

13 files changed

+94
-296
lines changed

13 files changed

+94
-296
lines changed

clang/lib/CodeGen/CGDebugInfo.cpp

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1787,36 +1787,18 @@ CGDebugInfo::CollectTemplateParams(const TemplateParameterList *TPList,
17871787
for (unsigned i = 0, e = TAList.size(); i != e; ++i) {
17881788
const TemplateArgument &TA = TAList[i];
17891789
StringRef Name;
1790-
bool defaultParameter = false;
17911790
if (TPList)
17921791
Name = TPList->getParam(i)->getName();
17931792
switch (TA.getKind()) {
17941793
case TemplateArgument::Type: {
17951794
llvm::DIType *TTy = getOrCreateType(TA.getAsType(), Unit);
1796-
1797-
if (TPList)
1798-
if (auto *templateType =
1799-
dyn_cast_or_null<TemplateTypeParmDecl>(TPList->getParam(i)))
1800-
if (templateType->hasDefaultArgument())
1801-
defaultParameter =
1802-
templateType->getDefaultArgument() == TA.getAsType();
1803-
1804-
TemplateParams.push_back(DBuilder.createTemplateTypeParameter(
1805-
TheCU, Name, TTy, defaultParameter));
1806-
1795+
TemplateParams.push_back(
1796+
DBuilder.createTemplateTypeParameter(TheCU, Name, TTy));
18071797
} break;
18081798
case TemplateArgument::Integral: {
18091799
llvm::DIType *TTy = getOrCreateType(TA.getIntegralType(), Unit);
1810-
if (TPList)
1811-
if (auto *templateType =
1812-
dyn_cast_or_null<NonTypeTemplateParmDecl>(TPList->getParam(i)))
1813-
if (templateType->hasDefaultArgument())
1814-
defaultParameter =
1815-
templateType->getDefaultArgument()->EvaluateKnownConstInt(
1816-
CGM.getContext()) == TA.getAsIntegral();
1817-
18181800
TemplateParams.push_back(DBuilder.createTemplateValueParameter(
1819-
TheCU, Name, TTy, defaultParameter,
1801+
TheCU, Name, TTy,
18201802
llvm::ConstantInt::get(CGM.getLLVMContext(), TA.getAsIntegral())));
18211803
} break;
18221804
case TemplateArgument::Declaration: {
@@ -1855,7 +1837,7 @@ CGDebugInfo::CollectTemplateParams(const TemplateParameterList *TPList,
18551837
V = V->stripPointerCasts();
18561838
}
18571839
TemplateParams.push_back(DBuilder.createTemplateValueParameter(
1858-
TheCU, Name, TTy, defaultParameter, cast_or_null<llvm::Constant>(V)));
1840+
TheCU, Name, TTy, cast_or_null<llvm::Constant>(V)));
18591841
} break;
18601842
case TemplateArgument::NullPtr: {
18611843
QualType T = TA.getNullPtrType();
@@ -1873,8 +1855,8 @@ CGDebugInfo::CollectTemplateParams(const TemplateParameterList *TPList,
18731855
V = CGM.getCXXABI().EmitNullMemberPointer(MPT);
18741856
if (!V)
18751857
V = llvm::ConstantInt::get(CGM.Int8Ty, 0);
1876-
TemplateParams.push_back(DBuilder.createTemplateValueParameter(
1877-
TheCU, Name, TTy, defaultParameter, V));
1858+
TemplateParams.push_back(
1859+
DBuilder.createTemplateValueParameter(TheCU, Name, TTy, V));
18781860
} break;
18791861
case TemplateArgument::Template:
18801862
TemplateParams.push_back(DBuilder.createTemplateTemplateParameter(
@@ -1895,7 +1877,7 @@ CGDebugInfo::CollectTemplateParams(const TemplateParameterList *TPList,
18951877
assert(V && "Expression in template argument isn't constant");
18961878
llvm::DIType *TTy = getOrCreateType(T, Unit);
18971879
TemplateParams.push_back(DBuilder.createTemplateValueParameter(
1898-
TheCU, Name, TTy, defaultParameter, V->stripPointerCasts()));
1880+
TheCU, Name, TTy, V->stripPointerCasts()));
18991881
} break;
19001882
// And the following should never occur:
19011883
case TemplateArgument::TemplateExpansion:

llvm/include/llvm/IR/DIBuilder.h

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -443,22 +443,19 @@ namespace llvm {
443443
/// \param Scope Scope in which this type is defined.
444444
/// \param Name Type parameter name.
445445
/// \param Ty Parameter type.
446-
/// \param IsDefault Parameter is default or not
447-
DITemplateTypeParameter *createTemplateTypeParameter(DIScope *Scope,
448-
StringRef Name,
449-
DIType *Ty,
450-
bool IsDefault);
446+
DITemplateTypeParameter *
447+
createTemplateTypeParameter(DIScope *Scope, StringRef Name, DIType *Ty);
451448

452449
/// Create debugging information for template
453450
/// value parameter.
454451
/// \param Scope Scope in which this type is defined.
455452
/// \param Name Value parameter name.
456453
/// \param Ty Parameter type.
457-
/// \param IsDefault Parameter is default or not
458454
/// \param Val Constant parameter value.
459-
DITemplateValueParameter *
460-
createTemplateValueParameter(DIScope *Scope, StringRef Name, DIType *Ty,
461-
bool IsDefault, Constant *Val);
455+
DITemplateValueParameter *createTemplateValueParameter(DIScope *Scope,
456+
StringRef Name,
457+
DIType *Ty,
458+
Constant *Val);
462459

463460
/// Create debugging information for a template template parameter.
464461
/// \param Scope Scope in which this type is defined.

llvm/include/llvm/IR/DebugInfoMetadata.h

Lines changed: 24 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2131,11 +2131,9 @@ class DIModule : public DIScope {
21312131
/// Base class for template parameters.
21322132
class DITemplateParameter : public DINode {
21332133
protected:
2134-
bool IsDefault;
2135-
21362134
DITemplateParameter(LLVMContext &Context, unsigned ID, StorageType Storage,
2137-
unsigned Tag, bool IsDefault, ArrayRef<Metadata *> Ops)
2138-
: DINode(Context, ID, Storage, Tag, Ops), IsDefault(IsDefault) {}
2135+
unsigned Tag, ArrayRef<Metadata *> Ops)
2136+
: DINode(Context, ID, Storage, Tag, Ops) {}
21392137
~DITemplateParameter() = default;
21402138

21412139
public:
@@ -2144,7 +2142,6 @@ class DITemplateParameter : public DINode {
21442142

21452143
MDString *getRawName() const { return getOperandAs<MDString>(0); }
21462144
Metadata *getRawType() const { return getOperand(1); }
2147-
bool isDefault() const { return IsDefault; }
21482145

21492146
static bool classof(const Metadata *MD) {
21502147
return MD->getMetadataID() == DITemplateTypeParameterKind ||
@@ -2157,35 +2154,30 @@ class DITemplateTypeParameter : public DITemplateParameter {
21572154
friend class MDNode;
21582155

21592156
DITemplateTypeParameter(LLVMContext &Context, StorageType Storage,
2160-
bool IsDefault, ArrayRef<Metadata *> Ops)
2157+
ArrayRef<Metadata *> Ops)
21612158
: DITemplateParameter(Context, DITemplateTypeParameterKind, Storage,
2162-
dwarf::DW_TAG_template_type_parameter, IsDefault,
2163-
Ops) {}
2159+
dwarf::DW_TAG_template_type_parameter, Ops) {}
21642160
~DITemplateTypeParameter() = default;
21652161

21662162
static DITemplateTypeParameter *getImpl(LLVMContext &Context, StringRef Name,
2167-
DIType *Type, bool IsDefault,
2168-
StorageType Storage,
2163+
DIType *Type, StorageType Storage,
21692164
bool ShouldCreate = true) {
2170-
return getImpl(Context, getCanonicalMDString(Context, Name), Type,
2171-
IsDefault, Storage, ShouldCreate);
2165+
return getImpl(Context, getCanonicalMDString(Context, Name), Type, Storage,
2166+
ShouldCreate);
21722167
}
21732168
static DITemplateTypeParameter *getImpl(LLVMContext &Context, MDString *Name,
2174-
Metadata *Type, bool IsDefault,
2175-
StorageType Storage,
2169+
Metadata *Type, StorageType Storage,
21762170
bool ShouldCreate = true);
21772171

21782172
TempDITemplateTypeParameter cloneImpl() const {
2179-
return getTemporary(getContext(), getName(), getType(), isDefault());
2173+
return getTemporary(getContext(), getName(), getType());
21802174
}
21812175

21822176
public:
2183-
DEFINE_MDNODE_GET(DITemplateTypeParameter,
2184-
(StringRef Name, DIType *Type, bool IsDefault),
2185-
(Name, Type, IsDefault))
2186-
DEFINE_MDNODE_GET(DITemplateTypeParameter,
2187-
(MDString *Name, Metadata *Type, bool IsDefault),
2188-
(Name, Type, IsDefault))
2177+
DEFINE_MDNODE_GET(DITemplateTypeParameter, (StringRef Name, DIType *Type),
2178+
(Name, Type))
2179+
DEFINE_MDNODE_GET(DITemplateTypeParameter, (MDString * Name, Metadata *Type),
2180+
(Name, Type))
21892181

21902182
TempDITemplateTypeParameter clone() const { return cloneImpl(); }
21912183

@@ -2199,40 +2191,36 @@ class DITemplateValueParameter : public DITemplateParameter {
21992191
friend class MDNode;
22002192

22012193
DITemplateValueParameter(LLVMContext &Context, StorageType Storage,
2202-
unsigned Tag, bool IsDefault,
2203-
ArrayRef<Metadata *> Ops)
2194+
unsigned Tag, ArrayRef<Metadata *> Ops)
22042195
: DITemplateParameter(Context, DITemplateValueParameterKind, Storage, Tag,
2205-
IsDefault, Ops) {}
2196+
Ops) {}
22062197
~DITemplateValueParameter() = default;
22072198

22082199
static DITemplateValueParameter *getImpl(LLVMContext &Context, unsigned Tag,
22092200
StringRef Name, DIType *Type,
2210-
bool IsDefault, Metadata *Value,
2211-
StorageType Storage,
2201+
Metadata *Value, StorageType Storage,
22122202
bool ShouldCreate = true) {
22132203
return getImpl(Context, Tag, getCanonicalMDString(Context, Name), Type,
2214-
IsDefault, Value, Storage, ShouldCreate);
2204+
Value, Storage, ShouldCreate);
22152205
}
22162206
static DITemplateValueParameter *getImpl(LLVMContext &Context, unsigned Tag,
22172207
MDString *Name, Metadata *Type,
2218-
bool IsDefault, Metadata *Value,
2219-
StorageType Storage,
2208+
Metadata *Value, StorageType Storage,
22202209
bool ShouldCreate = true);
22212210

22222211
TempDITemplateValueParameter cloneImpl() const {
22232212
return getTemporary(getContext(), getTag(), getName(), getType(),
2224-
isDefault(), getValue());
2213+
getValue());
22252214
}
22262215

22272216
public:
22282217
DEFINE_MDNODE_GET(DITemplateValueParameter,
2229-
(unsigned Tag, StringRef Name, DIType *Type, bool IsDefault,
2218+
(unsigned Tag, StringRef Name, DIType *Type,
22302219
Metadata *Value),
2231-
(Tag, Name, Type, IsDefault, Value))
2232-
DEFINE_MDNODE_GET(DITemplateValueParameter,
2233-
(unsigned Tag, MDString *Name, Metadata *Type,
2234-
bool IsDefault, Metadata *Value),
2235-
(Tag, Name, Type, IsDefault, Value))
2220+
(Tag, Name, Type, Value))
2221+
DEFINE_MDNODE_GET(DITemplateValueParameter, (unsigned Tag, MDString *Name,
2222+
Metadata *Type, Metadata *Value),
2223+
(Tag, Name, Type, Value))
22362224

22372225
TempDITemplateValueParameter clone() const { return cloneImpl(); }
22382226

llvm/lib/AsmParser/LLParser.cpp

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4842,38 +4842,33 @@ bool LLParser::ParseDIModule(MDNode *&Result, bool IsDistinct) {
48424842
}
48434843

48444844
/// ParseDITemplateTypeParameter:
4845-
/// ::= !DITemplateTypeParameter(name: "Ty", type: !1, defaulted: false)
4845+
/// ::= !DITemplateTypeParameter(name: "Ty", type: !1)
48464846
bool LLParser::ParseDITemplateTypeParameter(MDNode *&Result, bool IsDistinct) {
48474847
#define VISIT_MD_FIELDS(OPTIONAL, REQUIRED) \
48484848
OPTIONAL(name, MDStringField, ); \
4849-
REQUIRED(type, MDField, ); \
4850-
OPTIONAL(defaulted, MDBoolField, );
4849+
REQUIRED(type, MDField, );
48514850
PARSE_MD_FIELDS();
48524851
#undef VISIT_MD_FIELDS
48534852

4854-
Result = GET_OR_DISTINCT(DITemplateTypeParameter,
4855-
(Context, name.Val, type.Val, defaulted.Val));
4853+
Result =
4854+
GET_OR_DISTINCT(DITemplateTypeParameter, (Context, name.Val, type.Val));
48564855
return false;
48574856
}
48584857

48594858
/// ParseDITemplateValueParameter:
48604859
/// ::= !DITemplateValueParameter(tag: DW_TAG_template_value_parameter,
4861-
/// name: "V", type: !1, defaulted: false,
4862-
/// value: i32 7)
4860+
/// name: "V", type: !1, value: i32 7)
48634861
bool LLParser::ParseDITemplateValueParameter(MDNode *&Result, bool IsDistinct) {
48644862
#define VISIT_MD_FIELDS(OPTIONAL, REQUIRED) \
48654863
OPTIONAL(tag, DwarfTagField, (dwarf::DW_TAG_template_value_parameter)); \
48664864
OPTIONAL(name, MDStringField, ); \
48674865
OPTIONAL(type, MDField, ); \
4868-
OPTIONAL(defaulted, MDBoolField, ); \
48694866
REQUIRED(value, MDField, );
4870-
48714867
PARSE_MD_FIELDS();
48724868
#undef VISIT_MD_FIELDS
48734869

4874-
Result = GET_OR_DISTINCT(
4875-
DITemplateValueParameter,
4876-
(Context, tag.Val, name.Val, type.Val, defaulted.Val, value.Val));
4870+
Result = GET_OR_DISTINCT(DITemplateValueParameter,
4871+
(Context, tag.Val, name.Val, type.Val, value.Val));
48774872
return false;
48784873
}
48794874

llvm/lib/Bitcode/Reader/MetadataLoader.cpp

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1668,34 +1668,27 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
16681668
break;
16691669
}
16701670
case bitc::METADATA_TEMPLATE_TYPE: {
1671-
if (Record.size() < 3 || Record.size() > 4)
1671+
if (Record.size() != 3)
16721672
return error("Invalid record");
16731673

16741674
IsDistinct = Record[0];
1675-
MetadataList.assignValue(
1676-
GET_OR_DISTINCT(DITemplateTypeParameter,
1677-
(Context, getMDString(Record[1]),
1678-
getDITypeRefOrNull(Record[2]),
1679-
(Record.size() == 4) ? getMDOrNull(Record[3])
1680-
: getMDOrNull(false))),
1681-
NextMetadataNo);
1675+
MetadataList.assignValue(GET_OR_DISTINCT(DITemplateTypeParameter,
1676+
(Context, getMDString(Record[1]),
1677+
getDITypeRefOrNull(Record[2]))),
1678+
NextMetadataNo);
16821679
NextMetadataNo++;
16831680
break;
16841681
}
16851682
case bitc::METADATA_TEMPLATE_VALUE: {
1686-
if (Record.size() < 5 || Record.size() > 6)
1683+
if (Record.size() != 5)
16871684
return error("Invalid record");
16881685

16891686
IsDistinct = Record[0];
1690-
16911687
MetadataList.assignValue(
1692-
GET_OR_DISTINCT(
1693-
DITemplateValueParameter,
1694-
(Context, Record[1], getMDString(Record[2]),
1695-
getDITypeRefOrNull(Record[3]),
1696-
(Record.size() == 6) ? getMDOrNull(Record[4]) : getMDOrNull(false),
1697-
(Record.size() == 6) ? getMDOrNull(Record[5])
1698-
: getMDOrNull(Record[4]))),
1688+
GET_OR_DISTINCT(DITemplateValueParameter,
1689+
(Context, Record[1], getMDString(Record[2]),
1690+
getDITypeRefOrNull(Record[3]),
1691+
getMDOrNull(Record[4]))),
16991692
NextMetadataNo);
17001693
NextMetadataNo++;
17011694
break;

llvm/lib/Bitcode/Writer/BitcodeWriter.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1792,7 +1792,6 @@ void ModuleBitcodeWriter::writeDITemplateTypeParameter(
17921792
Record.push_back(N->isDistinct());
17931793
Record.push_back(VE.getMetadataOrNullID(N->getRawName()));
17941794
Record.push_back(VE.getMetadataOrNullID(N->getType()));
1795-
Record.push_back(N->isDefault());
17961795

17971796
Stream.EmitRecord(bitc::METADATA_TEMPLATE_TYPE, Record, Abbrev);
17981797
Record.clear();
@@ -1805,7 +1804,6 @@ void ModuleBitcodeWriter::writeDITemplateValueParameter(
18051804
Record.push_back(N->getTag());
18061805
Record.push_back(VE.getMetadataOrNullID(N->getRawName()));
18071806
Record.push_back(VE.getMetadataOrNullID(N->getType()));
1808-
Record.push_back(N->isDefault());
18091807
Record.push_back(VE.getMetadataOrNullID(N->getValue()));
18101808

18111809
Stream.EmitRecord(bitc::METADATA_TEMPLATE_VALUE, Record, Abbrev);

llvm/lib/IR/AsmWriter.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2073,7 +2073,6 @@ static void writeDITemplateTypeParameter(raw_ostream &Out,
20732073
MDFieldPrinter Printer(Out, TypePrinter, Machine, Context);
20742074
Printer.printString("name", N->getName());
20752075
Printer.printMetadata("type", N->getRawType(), /* ShouldSkipNull */ false);
2076-
Printer.printBool("defaulted", N->isDefault(), /* Default= */ false);
20772076
Out << ")";
20782077
}
20792078

@@ -2088,7 +2087,6 @@ static void writeDITemplateValueParameter(raw_ostream &Out,
20882087
Printer.printTag(N);
20892088
Printer.printString("name", N->getName());
20902089
Printer.printMetadata("type", N->getRawType());
2091-
Printer.printBool("defaulted", N->isDefault(), /* Default= */ false);
20922090
Printer.printMetadata("value", N->getValue(), /* ShouldSkipNull */ false);
20932091
Out << ")";
20942092
}

llvm/lib/IR/DIBuilder.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -406,42 +406,41 @@ DIBuilder::createObjCProperty(StringRef Name, DIFile *File, unsigned LineNumber,
406406

407407
DITemplateTypeParameter *
408408
DIBuilder::createTemplateTypeParameter(DIScope *Context, StringRef Name,
409-
DIType *Ty, bool isDefault) {
409+
DIType *Ty) {
410410
assert((!Context || isa<DICompileUnit>(Context)) && "Expected compile unit");
411-
return DITemplateTypeParameter::get(VMContext, Name, Ty, isDefault);
411+
return DITemplateTypeParameter::get(VMContext, Name, Ty);
412412
}
413413

414414
static DITemplateValueParameter *
415415
createTemplateValueParameterHelper(LLVMContext &VMContext, unsigned Tag,
416416
DIScope *Context, StringRef Name, DIType *Ty,
417-
bool IsDefault, Metadata *MD) {
417+
Metadata *MD) {
418418
assert((!Context || isa<DICompileUnit>(Context)) && "Expected compile unit");
419-
return DITemplateValueParameter::get(VMContext, Tag, Name, Ty, IsDefault, MD);
419+
return DITemplateValueParameter::get(VMContext, Tag, Name, Ty, MD);
420420
}
421421

422422
DITemplateValueParameter *
423423
DIBuilder::createTemplateValueParameter(DIScope *Context, StringRef Name,
424-
DIType *Ty, bool isDefault,
425-
Constant *Val) {
424+
DIType *Ty, Constant *Val) {
426425
return createTemplateValueParameterHelper(
427426
VMContext, dwarf::DW_TAG_template_value_parameter, Context, Name, Ty,
428-
isDefault, getConstantOrNull(Val));
427+
getConstantOrNull(Val));
429428
}
430429

431430
DITemplateValueParameter *
432431
DIBuilder::createTemplateTemplateParameter(DIScope *Context, StringRef Name,
433432
DIType *Ty, StringRef Val) {
434433
return createTemplateValueParameterHelper(
435434
VMContext, dwarf::DW_TAG_GNU_template_template_param, Context, Name, Ty,
436-
false, MDString::get(VMContext, Val));
435+
MDString::get(VMContext, Val));
437436
}
438437

439438
DITemplateValueParameter *
440439
DIBuilder::createTemplateParameterPack(DIScope *Context, StringRef Name,
441440
DIType *Ty, DINodeArray Val) {
442441
return createTemplateValueParameterHelper(
443442
VMContext, dwarf::DW_TAG_GNU_template_parameter_pack, Context, Name, Ty,
444-
false, Val.get());
443+
Val.get());
445444
}
446445

447446
DICompositeType *DIBuilder::createClassType(

0 commit comments

Comments
 (0)