aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/AsmParser
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/AsmParser')
-rw-r--r--llvm/lib/AsmParser/LLParser.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp
index 5164cec..8e3ce49 100644
--- a/llvm/lib/AsmParser/LLParser.cpp
+++ b/llvm/lib/AsmParser/LLParser.cpp
@@ -4538,6 +4538,9 @@ bool LLParser::parseValID(ValID &ID, PerFunctionState *PFS, Type *ExpectedTy) {
if (!Indices.empty() && !Ty->isSized(&Visited))
return error(ID.Loc, "base element of getelementptr must be sized");
+ if (!ConstantExpr::isSupportedGetElementPtr(Ty))
+ return error(ID.Loc, "invalid base element for constant getelementptr");
+
if (!GetElementPtrInst::getIndexedType(Ty, Indices))
return error(ID.Loc, "invalid getelementptr indices");
@@ -5639,16 +5642,17 @@ bool LLParser::parseDIBasicType(MDNode *&Result, bool IsDistinct) {
OPTIONAL(name, MDStringField, ); \
OPTIONAL(size, MDUnsignedOrMDField, (0, UINT64_MAX)); \
OPTIONAL(align, MDUnsignedField, (0, UINT32_MAX)); \
+ OPTIONAL(dataSize, MDUnsignedField, (0, UINT32_MAX)); \
OPTIONAL(encoding, DwarfAttEncodingField, ); \
OPTIONAL(num_extra_inhabitants, MDUnsignedField, (0, UINT32_MAX)); \
OPTIONAL(flags, DIFlagField, );
PARSE_MD_FIELDS();
#undef VISIT_MD_FIELDS
- Result = GET_OR_DISTINCT(DIBasicType, (Context, tag.Val, name.Val,
- size.getValueAsMetadata(Context),
- align.Val, encoding.Val,
- num_extra_inhabitants.Val, flags.Val));
+ Result = GET_OR_DISTINCT(
+ DIBasicType,
+ (Context, tag.Val, name.Val, size.getValueAsMetadata(Context), align.Val,
+ encoding.Val, num_extra_inhabitants.Val, dataSize.Val, flags.Val));
return false;
}
@@ -6341,8 +6345,8 @@ bool LLParser::parseDIObjCProperty(MDNode *&Result, bool IsDistinct) {
#undef VISIT_MD_FIELDS
Result = GET_OR_DISTINCT(DIObjCProperty,
- (Context, name.Val, file.Val, line.Val, setter.Val,
- getter.Val, attributes.Val, type.Val));
+ (Context, name.Val, file.Val, line.Val, getter.Val,
+ setter.Val, attributes.Val, type.Val));
return false;
}