2011-12-28 10 views
15

Estoy escribiendo una optimización para mi compilador y utilizo LLVM IR como mi Lenguaje Intermedio. He analizado el archivo de entrada y lo convertí a LLVM IR. Durante la optimización, necesito recuperar los operandos de las instrucciones. Puedo encontrar getOpCode() en la clase de Instrucción, pero no puedo recuperar la lista de operandos. ¿Cómo hago eso?Obteniendo los operandos en una instrucción LLVM

Respuesta

23

Hay un montón de métodos de acceso de operando, por lo general proporcionados por la clase llvm::User, cuya página de Doxygen es: http://llvm.org/doxygen/classllvm_1_1User.html Hay getNumOperands() y getOperand(unsigned int), así como de estilo iterador descriptores de acceso op_begin() y op_end().

Por ejemplo, dada Instrucción %X = add i32 %a, 2, I->getOperand(0) devolverá el Value* para %a, y I->getOperand(1) devolverá el Value* para i32 2 (moldeable a ConstantInt).

1

Por ejemplo, si tiene la Instrucción * I1 - I1-> getOperand (0) devolverá el primer operando de tipo Valor *. Puede ir más allá, usando I1-> getOperand (0) -> getName() que devolverá el nombre del operando. Ver los métodos de la clase Value.

Cuestiones relacionadas