diff options
author | Sanjay Patel <spatel@rotateright.com> | 2019-09-25 13:29:09 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2019-09-25 13:29:09 +0000 |
commit | 2cec4b58f5ce7d5c843dbfb753b0acb29c81cfc0 (patch) | |
tree | 742840a75e3e3e25c93dc802a9003cc0b091b883 /llvm/lib/Bitcode | |
parent | 791526085338594381adcacc13f04a4834e56d36 (diff) | |
download | bcm5719-llvm-2cec4b58f5ce7d5c843dbfb753b0acb29c81cfc0.tar.gz bcm5719-llvm-2cec4b58f5ce7d5c843dbfb753b0acb29c81cfc0.zip |
Revert [IR] allow fast-math-flags on phi of FP values
This reverts r372866 (git commit dec03223a97af0e4dfcb23da55c0f7f8c9b62d00)
llvm-svn: 372868
Diffstat (limited to 'llvm/lib/Bitcode')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 29 | ||||
-rw-r--r-- | llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 5 |
2 files changed, 6 insertions, 28 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 9c377552b4a..89a5b7bdd5b 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -4629,48 +4629,31 @@ Error BitcodeReader::parseFunctionBody(Function *F) { InstructionList.push_back(I); break; case bitc::FUNC_CODE_INST_PHI: { // PHI: [ty, val0,bb0, ...] - if (Record.size() < 1) + if (Record.size() < 1 || ((Record.size()-1)&1)) return error("Invalid record"); - // The first record specifies the type. FullTy = getFullyStructuredTypeByID(Record[0]); Type *Ty = flattenPointerTypes(FullTy); if (!Ty) return error("Invalid record"); - // Phi arguments are pairs of records of [value, basic block]. - // There is an optional final record for fast-math-flags if this phi has a - // floating-point type. - size_t NumArgs = (Record.size() - 1) / 2; - if ((Record.size() - 1) % 2 == 1 && !Ty->isFloatingPointTy()) - return error("Invalid record"); - - PHINode *PN = PHINode::Create(Ty, NumArgs); + PHINode *PN = PHINode::Create(Ty, (Record.size()-1)/2); InstructionList.push_back(PN); - for (unsigned i = 0; i != NumArgs; i++) { + for (unsigned i = 0, e = Record.size()-1; i != e; i += 2) { Value *V; // With the new function encoding, it is possible that operands have // negative IDs (for forward references). Use a signed VBR // representation to keep the encoding small. if (UseRelativeIDs) - V = getValueSigned(Record, i * 2 + 1, NextValueNo, Ty); + V = getValueSigned(Record, 1+i, NextValueNo, Ty); else - V = getValue(Record, i * 2 + 1, NextValueNo, Ty); - BasicBlock *BB = getBasicBlock(Record[i * 2 + 2]); + V = getValue(Record, 1+i, NextValueNo, Ty); + BasicBlock *BB = getBasicBlock(Record[2+i]); if (!V || !BB) return error("Invalid record"); PN->addIncoming(V, BB); } I = PN; - - // If there are an even number of records, the final record must be FMF. - if (Record.size() % 2 == 0) { - assert(isa<FPMathOperator>(I) && "Unexpected phi type"); - FastMathFlags FMF = getDecodedFastMathFlags(Record[Record.size() - 1]); - if (FMF.any()) - I->setFastMathFlags(FMF); - } - break; } diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index 2818e843b50..0eea6dc87ce 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -2880,11 +2880,6 @@ void ModuleBitcodeWriter::writeInstruction(const Instruction &I, pushValueSigned(PN.getIncomingValue(i), InstID, Vals64); Vals64.push_back(VE.getValueID(PN.getIncomingBlock(i))); } - - uint64_t Flags = getOptimizationFlags(&I); - if (Flags != 0) - Vals64.push_back(Flags); - // Emit a Vals64 vector and exit. Stream.EmitRecord(Code, Vals64, AbbrevToUse); Vals64.clear(); |