diff options
author | Chris Lattner <sabre@nondot.org> | 2001-07-08 23:22:50 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2001-07-08 23:22:50 +0000 |
commit | ab5ac6bb384ec1e4f1cbc4e0ad0fb32d39eb7ff3 (patch) | |
tree | 1f05b07519bbc5138edde0c8dc04302c47d1f987 /lib/Bytecode/Writer | |
parent | 0bd654a049490a56b6c39f56acf7c8e634085c23 (diff) | |
download | external_llvm-ab5ac6bb384ec1e4f1cbc4e0ad0fb32d39eb7ff3.zip external_llvm-ab5ac6bb384ec1e4f1cbc4e0ad0fb32d39eb7ff3.tar.gz external_llvm-ab5ac6bb384ec1e4f1cbc4e0ad0fb32d39eb7ff3.tar.bz2 |
Implementation of Store & GetElementPtr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Bytecode/Writer')
-rw-r--r-- | lib/Bytecode/Writer/InstructionWriter.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/lib/Bytecode/Writer/InstructionWriter.cpp b/lib/Bytecode/Writer/InstructionWriter.cpp index 34d9568..73969e6 100644 --- a/lib/Bytecode/Writer/InstructionWriter.cpp +++ b/lib/Bytecode/Writer/InstructionWriter.cpp @@ -135,10 +135,19 @@ bool BytecodeWriter::processInstruction(const Instruction *I) { // the first param is actually interesting). But if we have no arguments // we take the type of the instruction itself. // - const Type *Ty = NumOperands ? I->getOperand(0)->getType() : I->getType(); - if (I->getOpcode() == Instruction::Malloc || - I->getOpcode() == Instruction::Alloca) + const Type *Ty; + switch (I->getOpcode()) { + case Instruction::Malloc: + case Instruction::Alloca: Ty = I->getType(); // Malloc & Alloca ALWAYS want to encode the return type + break; + case Instruction::Store: + Ty = I->getOperand(1)->getType(); // Encode the pointer type... + break; + default: // Otherwise use the default behavior... + Ty = NumOperands ? I->getOperand(0)->getType() : I->getType(); + break; + } unsigned Type; int Slot = Table.getValSlot(Ty); @@ -184,8 +193,8 @@ bool BytecodeWriter::processInstruction(const Instruction *I) { break; } - // If we weren't handled before here, we either have a large number of operands - // or a large operand index that we are refering to. + // If we weren't handled before here, we either have a large number of + // operands or a large operand index that we are refering to. outputInstructionFormat0(I, Table, Type, Out); return false; } |