diff options
Diffstat (limited to 'lib/Bytecode/Reader/Reader.cpp')
-rw-r--r-- | lib/Bytecode/Reader/Reader.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp index f0f6597d85..82b1888e6a 100644 --- a/lib/Bytecode/Reader/Reader.cpp +++ b/lib/Bytecode/Reader/Reader.cpp @@ -276,16 +276,17 @@ Value * BytecodeReader::getValue(unsigned type, unsigned oNum, bool Create) { } } - if (GlobalTyID < ModuleValues.size() && ModuleValues[GlobalTyID]) { - if (Num < ModuleValues[GlobalTyID]->size()) - return ModuleValues[GlobalTyID]->getOperand(Num); - Num -= ModuleValues[GlobalTyID]->size(); - } + if (GlobalTyID < ModuleValues.size()) + if (ValueList *Globals = ModuleValues[GlobalTyID]) { + if (Num < Globals->size()) + return Globals->getOperand(Num); + Num -= Globals->size(); + } - if (FunctionValues.size() > type && - FunctionValues[type] && - Num < FunctionValues[type]->size()) - return FunctionValues[type]->getOperand(Num); + if (type < FunctionValues.size()) + if (ValueList *Locals = FunctionValues[type]) + if (Num < Locals->size()) + return Locals->getOperand(Num); if (!Create) return 0; // Do not create a placeholder? |