diff --git a/clang/include/clang/Pac/PacDfi.h b/clang/include/clang/Pac/PacDfi.h index 0d028417cdcc56b218a139d0674719d19dc26a2f..920cfffc87b856a8e3d45e1de64316cdf36bdd15 100644 --- a/clang/include/clang/Pac/PacDfi.h +++ b/clang/include/clang/Pac/PacDfi.h @@ -23,6 +23,5 @@ using namespace clang; void PacDfiParseStruct(RecordDecl *TagDecl, ASTContext &Ctx, DiagnosticsEngine &Diags); void PacDfiEmitStructFieldsMetadata(llvm::Module &M, llvm::LLVMContext &VMContext, CodeGen::CodeGenModule *CGM); void PacDfiRecordDecl2StructName(const RecordDecl *RD, llvm::StructType *Entry); - #endif diff --git a/clang/lib/Pac/CMakeLists.txt b/clang/lib/Pac/CMakeLists.txt index 315da8543dd7f39ba751f4d28f26017e4c8c0e31..f27ffaf79e8c704d55f117081defd4c4679d935f 100644 --- a/clang/lib/Pac/CMakeLists.txt +++ b/clang/lib/Pac/CMakeLists.txt @@ -2,6 +2,6 @@ add_clang_library(pacDfi PacDfi.cpp LINK_LIBS - LLVMParts + Parts clangCodeGen ) diff --git a/clang/lib/Pac/PacDfi.cpp b/clang/lib/Pac/PacDfi.cpp index 308d734193fb5710ff429b58b1ff6b68a33b2cde..2a2e502f4e252d269d2690c5c55197fa251d7a42 100644 --- a/clang/lib/Pac/PacDfi.cpp +++ b/clang/lib/Pac/PacDfi.cpp @@ -88,7 +88,8 @@ void PacDfiParseStruct(RecordDecl *TagDecl, ASTContext &Ctx, DiagnosticsEngine & } void PacDfiCreateMetaData(std::map> &fieldInfos, StringRef mdName, - llvm::Module &M, llvm::LLVMContext &VMContext, CodeGen::CodeGenModule *CGM) + llvm::Module &M, CodeGen::CodeGenModule *CGM, + std::function func) { llvm::NamedMDNode *PacNMD = M.getOrInsertNamedMetadata(mdName); llvm::NamedMDNode *PacNMDName = M.getOrInsertNamedMetadata(mdName.str() + "name"); @@ -99,30 +100,31 @@ void PacDfiCreateMetaData(std::map> &fieldI 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)); + PacFields.push_back(llvm::MDString::get(M.getContext(), styName)); + PacFieldsName.push_back(llvm::MDString::get(M.getContext(), styName)); for (auto *Field : item.second) { - PacFieldsName.push_back(llvm::MDString::get(VMContext, Field->getName())); - unsigned idx = CodeGen::getLLVMFieldNumber(*CGM, item.first, Field); + PacFieldsName.push_back(llvm::MDString::get(M.getContext(), Field->getName())); + unsigned idx = func(*CGM, item.first, Field); PacFields.push_back(llvm::ConstantAsMetadata::get(llvm::ConstantInt::get( - llvm::Type::getInt32Ty(VMContext), idx))); + llvm::Type::getInt32Ty(M.getContext()), idx))); } - PacNMD->addOperand(llvm::MDNode::get(VMContext, PacFields)); - PacNMDName->addOperand(llvm::MDNode::get(VMContext, PacFieldsName)); + PacNMD->addOperand(llvm::MDNode::get(M.getContext(), PacFields)); + PacNMDName->addOperand(llvm::MDNode::get(M.getContext(), PacFieldsName)); } } -void PacDfiEmitStructFieldsMetadata(llvm::Module &M, llvm::LLVMContext &VMContext, CodeGen::CodeGenModule *CGM) +void PacDfiEmitStructFieldsMetadata(llvm::Module &M, CodeGen::CodeGenModule *CGM, + std::function func) { if (!llvm::PARTS::useDataFieldTag()) { return; } // emit struct fields that need to protect with PA if (!PacFieldNameInfos.empty()) { - PacDfiCreateMetaData(PacFieldNameInfos, "pa_field_info", M, VMContext, CGM); + PacDfiCreateMetaData(PacFieldNameInfos, "pa_field_info", M, CGM, func); } if (!PacPtrNameInfos.empty()) { - PacDfiCreateMetaData(PacPtrNameInfos, "pa_ptr_field_info", M, VMContext, CGM); + PacDfiCreateMetaData(PacPtrNameInfos, "pa_ptr_field_info", M, CGM, func); } } diff --git a/llvm/lib/PARTS/CMakeLists.txt b/llvm/lib/PARTS/CMakeLists.txt index aa1e5fcff913aea150c0e9f5b709d8f9c8049e41..196de8467f3e1952d880b15e21900a539c8bb24d 100644 --- a/llvm/lib/PARTS/CMakeLists.txt +++ b/llvm/lib/PARTS/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_component_library(LLVMParts +add_llvm_component_library(Parts Parts.cpp PartsPluginPass.cpp @@ -20,4 +20,4 @@ add_llvm_component_library(LLVMParts LLVMTransformUtils LLVMCodeGen ) -set_property(TARGET LLVMParts PROPERTY LLVM_SYSTEM_LIBS) +set_property(TARGET Parts PROPERTY LLVM_SYSTEM_LIBS) \ No newline at end of file diff --git a/llvm/lib/Target/AArch64/CMakeLists.txt b/llvm/lib/Target/AArch64/CMakeLists.txt index e3d4d5494fa90b28971936de2b954be811c19cd4..e2ff8104b6f81d300f4e5cf5814202f853fe25ba 100644 --- a/llvm/lib/Target/AArch64/CMakeLists.txt +++ b/llvm/lib/Target/AArch64/CMakeLists.txt @@ -97,11 +97,11 @@ add_llvm_target(AArch64CodeGen DEPENDS intrinsics_gen - # OHOS_LOCAL begin - LLVMParts + # OHOS_LOCAL start + Parts LINK_LIBS - LLVMParts + Parts # OHOS_LOCAL end LINK_COMPONENTS