diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2006-11-18 04:37:19 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2006-11-18 04:37:19 +0000 |
commit | ceeed00be7029ee0f93d8ea0dd0195b5f0c1e23d (patch) | |
tree | 16246c845d54c458e66e53700d6af91888179514 /llvm/lib/Bytecode/Reader/Reader.cpp | |
parent | 2cca385fbb6b490a34476259b2c5802afced00cc (diff) | |
download | bcm5719-llvm-ceeed00be7029ee0f93d8ea0dd0195b5f0c1e23d.tar.gz bcm5719-llvm-ceeed00be7029ee0f93d8ea0dd0195b5f0c1e23d.zip |
Have ConstantExprs upgrade opcodes the same way as instructions.
llvm-svn: 31841
Diffstat (limited to 'llvm/lib/Bytecode/Reader/Reader.cpp')
-rw-r--r-- | llvm/lib/Bytecode/Reader/Reader.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/lib/Bytecode/Reader/Reader.cpp b/llvm/lib/Bytecode/Reader/Reader.cpp index 084b4fcade4..86e011eb0aa 100644 --- a/llvm/lib/Bytecode/Reader/Reader.cpp +++ b/llvm/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) { |