Obtention des opérandes dans une instruction LLVM
Je suis en train d'écrire une optimisation pour mon compilateur et j'utilise de l'IR LLVM que mon Langage Intermédiaire. J'ai analysé le fichier d'entrée et converti à l'IR LLVM. Au cours de l'optimisation, j'ai besoin de récupérer les opérandes des instructions. Je suis en mesure de trouver getOpCode()
dans le Instruction
classe, mais impossible de récupérer l'opérande liste. Comment dois-je faire à ce sujet?
source d'informationauteur Chethan Ravindranath
Vous devez vous connecter pour publier un commentaire.
Il ya beaucoup de l'opérande accesseurs, généralement fournie par la classe
llvm::User
dont doxygen page: http://llvm.org/doxygen/classllvm_1_1User.html Il y agetNumOperands()
etgetOperand(unsigned int)
ainsi que l'itérateur de style accesseursop_begin()
etop_end()
.Par exemple, étant donné Instruction
%X = add i32 %a, 2
I->getOperand(0)
sera de retour leValue*
pour%a
etI->getOperand(1)
sera de retour leValue*
pouri32 2
(moulage à ConstantInt).Par exemple, si vous avez
Instruction* I1
I1->getOperand(0)
sera de retour le premier opérande de typeValue*
. Vous pouvez aller plus loin, à l'aide deI1->getOperand(0)->getName()
qui retourne le nom de l'opérande. VoirValue
les méthodes de la classe.