2013-02-04 31 views
6

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

+0

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

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ủa Function 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.

Các vấn đề liên quan