OLD | NEW |
---|---|
1 //===- subzero/src/PNaClTranslator.cpp - ICE from bitcode -----------------===// | 1 //===- subzero/src/PNaClTranslator.cpp - ICE from bitcode -----------------===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 /// | 9 /// |
10 /// \file | 10 /// \file |
(...skipping 2019 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2030 if (Ty == Ice::IceType_void) | 2030 if (Ty == Ice::IceType_void) |
2031 return; | 2031 return; |
2032 Ice::Variable *Var = getNextInstVar(Ty); | 2032 Ice::Variable *Var = getNextInstVar(Ty); |
2033 CurrentNode->appendInst(Ice::InstAssign::create(Func.get(), Var, Var)); | 2033 CurrentNode->appendInst(Ice::InstAssign::create(Func.get(), Var, Var)); |
2034 } | 2034 } |
2035 | 2035 |
2036 Ice::Operand *reportGetOperandUndefined(NaClBcIndexSize_t Index) { | 2036 Ice::Operand *reportGetOperandUndefined(NaClBcIndexSize_t Index) { |
2037 std::string Buffer; | 2037 std::string Buffer; |
2038 raw_string_ostream StrBuf(Buffer); | 2038 raw_string_ostream StrBuf(Buffer); |
2039 StrBuf << "Value index " << Index << " not defined!"; | 2039 StrBuf << "Value index " << Index << " not defined!"; |
2040 Fatal(StrBuf.str()); | 2040 Error(StrBuf.str()); |
2041 // Recover and return some value. | |
2042 if (!LocalOperands.empty()) | |
2043 return LocalOperands.front(); | |
2044 return Context->getGlobalConstantByID(0); | |
2041 } | 2045 } |
2042 }; | 2046 }; |
2043 | 2047 |
2044 void FunctionParser::ExitBlock() { | 2048 void FunctionParser::ExitBlock() { |
2045 // Check if the last instruction in the function was terminating. | 2049 // Check if the last instruction in the function was terminating. |
2046 if (!InstIsTerminating) { | 2050 if (!InstIsTerminating) { |
2047 Error("Last instruction in function not terminator"); | 2051 Error("Last instruction in function not terminator"); |
2048 if (isIRGenerationDisabled()) | 2052 if (isIRGenerationDisabled()) |
2049 return; | 2053 return; |
2050 // Recover by inserting an unreachable instruction. | 2054 // Recover by inserting an unreachable instruction. |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2281 std::string Buffer; | 2285 std::string Buffer; |
2282 raw_string_ostream StrBuf(Buffer); | 2286 raw_string_ostream StrBuf(Buffer); |
2283 dumpVectorIndexCheckValue(StrBuf, IndexCheckValue); | 2287 dumpVectorIndexCheckValue(StrBuf, IndexCheckValue); |
2284 StrBuf << ": insertelement " << VecType << " " << *Vec << ", " | 2288 StrBuf << ": insertelement " << VecType << " " << *Vec << ", " |
2285 << Elt->getType() << " " << *Elt << ", " << Index->getType() << " " | 2289 << Elt->getType() << " " << *Elt << ", " << Index->getType() << " " |
2286 << *Index; | 2290 << *Index; |
2287 Error(StrBuf.str()); | 2291 Error(StrBuf.str()); |
2288 appendErrorInstruction(Elt->getType()); | 2292 appendErrorInstruction(Elt->getType()); |
2289 return; | 2293 return; |
2290 } | 2294 } |
2295 if (Ice::typeElementType(VecType) != Elt->getType()) { | |
2296 std::string Buffer; | |
2297 raw_string_ostream StrBuf(Buffer); | |
2298 StrBuf << "Element type " << Ice::typeString(Elt->getType()) | |
Jim Stichnoth
2015/09/21 21:39:54
May want to use the string "insertelement" in the
Karl
2015/09/21 22:32:46
Done.
| |
2299 << " doesn't match vector type: " << Ice::typeString(VecType); | |
2300 Error(StrBuf.str()); | |
2301 appendErrorInstruction(Elt->getType()); | |
2302 return; | |
2303 } | |
2291 CurrentNode->appendInst(Ice::InstInsertElement::create( | 2304 CurrentNode->appendInst(Ice::InstInsertElement::create( |
2292 Func.get(), getNextInstVar(VecType), Vec, Elt, Index)); | 2305 Func.get(), getNextInstVar(VecType), Vec, Elt, Index)); |
2293 return; | 2306 return; |
2294 } | 2307 } |
2295 case naclbitc::FUNC_CODE_INST_CMP2: { | 2308 case naclbitc::FUNC_CODE_INST_CMP2: { |
2296 // CMP2: [opval, opval, pred] | 2309 // CMP2: [opval, opval, pred] |
2297 if (!isValidRecordSize(3, "compare")) | 2310 if (!isValidRecordSize(3, "compare")) |
2298 return; | 2311 return; |
2299 Ice::Operand *Op1 = getRelativeOperand(Values[0], BaseIndex); | 2312 Ice::Operand *Op1 = getRelativeOperand(Values[0], BaseIndex); |
2300 Ice::Operand *Op2 = getRelativeOperand(Values[1], BaseIndex); | 2313 Ice::Operand *Op2 = getRelativeOperand(Values[1], BaseIndex); |
(...skipping 968 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3269 } | 3282 } |
3270 if (InputStreamFile.getBitcodeBytes().getExtent() % 4 != 0) { | 3283 if (InputStreamFile.getBitcodeBytes().getExtent() % 4 != 0) { |
3271 ErrStream | 3284 ErrStream |
3272 << IRFilename | 3285 << IRFilename |
3273 << ": Bitcode stream should be a multiple of 4 bytes in length.\n"; | 3286 << ": Bitcode stream should be a multiple of 4 bytes in length.\n"; |
3274 llvm::report_fatal_error("Bitcode stream should be a multiple of 4 bytes"); | 3287 llvm::report_fatal_error("Bitcode stream should be a multiple of 4 bytes"); |
3275 } | 3288 } |
3276 } | 3289 } |
3277 | 3290 |
3278 } // end of namespace Ice | 3291 } // end of namespace Ice |
OLD | NEW |