diff --git a/clang/lib/Pac/PacDfi.cpp b/clang/lib/Pac/PacDfi.cpp index 4ab2b19ea0691ca7bf7d4d61648b935745e5518c..308d734193fb5710ff429b58b1ff6b68a33b2cde 100644 --- a/clang/lib/Pac/PacDfi.cpp +++ b/clang/lib/Pac/PacDfi.cpp @@ -91,19 +91,24 @@ void PacDfiCreateMetaData(std::map> &fieldI llvm::Module &M, llvm::LLVMContext &VMContext, CodeGen::CodeGenModule *CGM) { llvm::NamedMDNode *PacNMD = M.getOrInsertNamedMetadata(mdName); + llvm::NamedMDNode *PacNMDName = M.getOrInsertNamedMetadata(mdName.str() + "name"); for (auto item : fieldInfos) { if (RecordDecl2StructName.find(item.first) == RecordDecl2StructName.end()) { continue; } std::vector PacFields; + std::vector PacFieldsName; auto styName = RecordDecl2StructName.find(item.first)->second; PacFields.push_back(llvm::MDString::get(VMContext, styName)); + PacFieldsName.push_back(llvm::MDString::get(VMContext, styName)); for (auto *Field : item.second) { + PacFieldsName.push_back(llvm::MDString::get(VMContext, Field->getName())); unsigned idx = CodeGen::getLLVMFieldNumber(*CGM, item.first, Field); PacFields.push_back(llvm::ConstantAsMetadata::get(llvm::ConstantInt::get( llvm::Type::getInt32Ty(VMContext), idx))); } PacNMD->addOperand(llvm::MDNode::get(VMContext, PacFields)); + PacNMDName->addOperand(llvm::MDNode::get(VMContext, PacFieldsName)); } } diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp index 1c0e0c62a3c5f6a51de6c378cc2ba9e56752560b..2b506786df770a095f44bc7f26c75b4d4c8925c0 100644 --- a/clang/lib/Parse/ParseExpr.cpp +++ b/clang/lib/Parse/ParseExpr.cpp @@ -2408,8 +2408,9 @@ ExprResult Parser::ParseSYCLUniqueStableNameExpression() { ExprResult Parser::ParseUnaryExprOrTypeTraitExpression() { assert(Tok.isOneOf(tok::kw_sizeof, tok::kw___alignof, tok::kw_alignof, tok::kw__Alignof, tok::kw_vec_step, - tok::kw___builtin_omp_required_simd_align) && - "Not a sizeof/alignof/vec_step expression!"); + tok::kw___builtin_omp_required_simd_align, + tok::kw___builtin_get_modifier_bytype) && // OHOS_LOCAL + "Not a sizeof/alignof/vec_step/get_modifier_bytype expression!"); Token OpTok = Tok; ConsumeToken();