summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bytecode/Reader/Reader.cpp
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2006-11-18 04:37:19 +0000
committerReid Spencer <rspencer@reidspencer.com>2006-11-18 04:37:19 +0000
commitceeed00be7029ee0f93d8ea0dd0195b5f0c1e23d (patch)
tree16246c845d54c458e66e53700d6af91888179514 /llvm/lib/Bytecode/Reader/Reader.cpp
parent2cca385fbb6b490a34476259b2c5802afced00cc (diff)
downloadbcm5719-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.cpp12
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) {
OpenPOWER on IntegriCloud