Tôi đang viết một thẻ LLVM, nơi tôi sao chép một số chức năng bằng cách gọi llvm::CloneFunction
. Bây giờ tôi cũng muốn chèn các chức năng đó vào module. Làm thế nào tôi có thể làm điều đó?Cách chèn chức năng vào mô-đun LLVM
6
A
Trả lời
6
- Tạo một chức năng mới với
Function::Create
hoặc bằng phương tiện khác. Một nhà thầu củaFunction
chấp nhận một mô-đun để chèn hàm mới vào đó. - Sao chép một hàm vào hàm mới đó bằng CloneFunctionInto hoặc chỉ sao chép qua BB mà bạn cần.
0
Bạn có thể sử dụng CloneFunction và chèn nó vào các module sau đó như vậy
Function* duplicateFunction = CloneFunction(F, VMap,
/*ModuleLevelChanges=*/false);
F->getParent()->getFunctionList().push_back(duplicateFunction);
Ví dụ bị đánh cắp từ PartialInlining.cpp trong nguồn llvm.
Tôi đang cố gắng tìm một hàm LLVM API để thực hiện điều đó, nhưng vẫn không thể tìm thấy. – MetallicPriest