diff options
Diffstat (limited to 'llvm/lib/AsmParser/LLParser.cpp')
| -rw-r--r-- | llvm/lib/AsmParser/LLParser.cpp | 16 | 
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;  } | 
