2013-02-04 14 views
6

Bir LLVM geçişi yazıyorum, burada llvm::CloneFunction numaralı telefonu arayarak bazı işlevleri klonladım. Şimdi bu fonksiyonları modülde de eklemek istiyorum. Bunu nasıl yapabilirim?LLVM modülünde bir işlev nasıl eklenir

+0

Bunu yapan bir LLVM API işlevi bulmaya çalışıyorum, ancak yine de bulamıyorum. – MetallicPriest

cevap

6
  • Function::Create ile veya başka yöntemlerle yeni bir işlev oluşturun. Bir Function 'un kurucuları yeni işlevin ekleneceği bir modülü kabul eder.
  • CloneFunctionInto ile bu yeni işleve bir işlev kopyalayın ya da yalnızca ihtiyacınız olan BB'leri kopyalayın.
0

Sen LLVM kaynağında PartialInlining.cpp çalınan yüzden

Function* duplicateFunction = CloneFunction(F, VMap, 
               /*ModuleLevelChanges=*/false); 
    F->getParent()->getFunctionList().push_back(duplicateFunction); 

Örnek gibi sonradan modüle CloneFunction kullanmak ve bunu takabilirsiniz.