From 967413fa20ba0941e44954257634fce8f3b84f00 Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Sat, 18 Nov 2006 04:37:19 +0000 Subject: [PATCH] Have ConstantExprs upgrade opcodes the same way as instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31841 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Bytecode/Reader/Reader.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp index 084b4fcade4..86e011eb0aa 100644 --- a/lib/Bytecode/Reader/Reader.cpp +++ b/lib/Bytecode/Reader/Reader.cpp @@ -1506,9 +1506,19 @@ inline unsigned BytecodeReader::upgradeCEOpcodes( Opcode = 10; // Div else if (Opcode >=13 && Opcode <= 15) // URem through FRem Opcode = 11; // Rem - else if (Opcode > 15) // Everything above FRem + else if (Opcode >= 16 && Opcode <= 35) // And through Shr // Adjust for new instruction codes Opcode -= 4; + else if (Opcode >= 36 && Opcode <= 42) // Everything after Select + // In vers 6 bytecode we eliminated the placeholders for the obsolete + // VAARG and VANEXT instructions. Consequently those two slots were + // filled starting with Select (36) which was 34. So now we only need + // to subtract two. This circumvents hitting opcodes 32 and 33 + Opcode -= 2; + else { // Opcode < 10 or > 42 + // No upgrade necessary. + return 0; + } } switch (Opcode) { -- 2.34.1