Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: src/PNaClTranslator.cpp

Issue 1522433004: eliminate code related to --no-ir-gen (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Changes suggested by stichnot Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/IceOperand.h ('k') | tests_lit/parse_errs/bad-bb-size.test » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/PNaClTranslator.cpp
diff --git a/src/PNaClTranslator.cpp b/src/PNaClTranslator.cpp
index bdb524c4394d90f9bcaef5697fa1b4cdba3c7f9e..ddf6342e32b9fd50a8da74a43dda925c88d80d92 100644
--- a/src/PNaClTranslator.cpp
+++ b/src/PNaClTranslator.cpp
@@ -250,11 +250,6 @@ public:
size_t getNumTypeIDValues() const { return TypeIDValues.size(); }
- /// Returns true if generation of Subzero IR is disabled.
- bool isIRGenerationDisabled() const {
- return Translator.getFlags().getDisableIRGeneration();
- }
-
/// Returns the undefined type associated with type ID. Note: Returns extended
/// type ready to be defined.
ExtendedType *getTypeByIDForDefining(NaClBcIndexSize_t ID) {
@@ -534,11 +529,8 @@ private:
for (const Ice::FunctionDeclaration *Func : FunctionDeclarations) {
if (!Func->verifyLinkageCorrect(Ctx))
reportLinkageError("Function", *Func);
- Ice::Constant *C = nullptr;
- if (!isIRGenerationDisabled()) {
- C = getConstantSym(Func->getName(), Func->getSuppressMangling(),
- Func->isProto());
- }
+ Ice::Constant *C = getConstantSym(
+ Func->getName(), Func->getSuppressMangling(), Func->isProto());
ValueIDConstants.push_back(C);
}
}
@@ -549,11 +541,9 @@ private:
for (const Ice::VariableDeclaration *Decl : *VariableDeclarations) {
if (!Decl->verifyLinkageCorrect(Ctx))
reportLinkageError("Global", *Decl);
- Ice::Constant *C = nullptr;
- if (!isIRGenerationDisabled()) {
- C = getConstantSym(Decl->getName(), Decl->getSuppressMangling(),
- !Decl->hasInitializer());
- }
+ Ice::Constant *C =
+ getConstantSym(Decl->getName(), Decl->getSuppressMangling(),
+ !Decl->hasInitializer());
ValueIDConstants.push_back(C);
}
}
@@ -681,10 +671,6 @@ protected:
const Ice::ClFlags &getFlags() const { return getTranslator().getFlags(); }
- bool isIRGenerationDisabled() const {
- return getTranslator().getFlags().getDisableIRGeneration();
- }
-
// Default implementation. Reports that block is unknown and skips its
// contents.
bool ParseBlock(unsigned BlockID) override;
@@ -1145,11 +1131,9 @@ void GlobalsParser::ProcessRecord() {
uint32_t Alignment =
Context->extractAlignment(this, "Global variable", Values[0]);
CurGlobalVar = getGlobalVarByID(NextGlobalID);
- if (!isIRGenerationDisabled()) {
- InitializersNeeded = 1;
- CurGlobalVar->setAlignment(Alignment);
- CurGlobalVar->setIsConstant(Values[1] != 0);
- }
+ InitializersNeeded = 1;
+ CurGlobalVar->setAlignment(Alignment);
+ CurGlobalVar->setIsConstant(Values[1] != 0);
++NextGlobalID;
return;
}
@@ -1169,16 +1153,12 @@ void GlobalsParser::ProcessRecord() {
Error(StrBuf.str());
return;
}
- if (isIRGenerationDisabled())
- return;
InitializersNeeded = Values[0];
return;
case naclbitc::GLOBALVAR_ZEROFILL: {
// ZEROFILL: [size]
if (!isValidRecordSize(1, "zerofill"))
return;
- if (isIRGenerationDisabled())
- return;
CurGlobalVar->addInitializer(
Ice::VariableDeclaration::ZeroInitializer::create(Values[0]));
return;
@@ -1187,8 +1167,6 @@ void GlobalsParser::ProcessRecord() {
// DATA: [b0, b1, ...]
if (!isValidRecordSizeAtLeast(1, "data"))
return;
- if (isIRGenerationDisabled())
- return;
CurGlobalVar->addInitializer(
Ice::VariableDeclaration::DataInitializer::create(Values));
return;
@@ -1197,8 +1175,6 @@ void GlobalsParser::ProcessRecord() {
// RELOC: [val, [addend]]
if (!isValidRecordSizeInRange(1, 2, "reloc"))
return;
- if (isIRGenerationDisabled())
- return;
NaClBcIndexSize_t Index = Values[0];
NaClBcIndexSize_t IndexLimit = SpecifiedNumberVars + NumFunctionIDs;
if (Index >= IndexLimit) {
@@ -1365,22 +1341,16 @@ public:
// TODO(kschimpf) Clean up API to add a function signature to a CFG.
const Ice::FuncSigType &Signature = FuncDecl->getSignature();
- if (isIRGenerationDisabled()) {
- CurrentNode = nullptr;
- for (Ice::Type ArgType : Signature.getArgList()) {
- (void)ArgType;
- setNextLocalInstIndex(nullptr);
- }
- } else {
- Func->setFunctionName(FuncDecl->getName());
- Func->setReturnType(Signature.getReturnType());
- Func->setInternal(FuncDecl->getLinkage() == GlobalValue::InternalLinkage);
- CurrentNode = installNextBasicBlock();
- Func->setEntryNode(CurrentNode);
- for (Ice::Type ArgType : Signature.getArgList()) {
- Func->addArg(getNextInstVar(ArgType));
- }
+
+ Func->setFunctionName(FuncDecl->getName());
+ Func->setReturnType(Signature.getReturnType());
+ Func->setInternal(FuncDecl->getLinkage() == GlobalValue::InternalLinkage);
+ CurrentNode = installNextBasicBlock();
+ Func->setEntryNode(CurrentNode);
+ for (Ice::Type ArgType : Signature.getArgList()) {
+ Func->addArg(getNextInstVar(ArgType));
}
+
bool ParserResult = ParseThisBlock();
// Temporarily end per-function timing, which will be resumed by the
@@ -1424,8 +1394,6 @@ public:
if (Index < CachedNumGlobalValueIDs) {
return Context->getGlobalConstantByID(Index);
}
- if (isIRGenerationDisabled())
- return nullptr;
NaClBcIndexSize_t LocalIndex = Index - CachedNumGlobalValueIDs;
if (LocalIndex >= LocalOperands.size())
reportGetOperandUndefined(Index);
@@ -1480,14 +1448,12 @@ private:
// Creates and appends a new basic block to the list of basic blocks.
Ice::CfgNode *installNextBasicBlock() {
- assert(!isIRGenerationDisabled());
Ice::CfgNode *Node = Func->makeNode();
return Node;
}
// Returns the Index-th basic block in the list of basic blocks.
Ice::CfgNode *getBasicBlock(NaClBcIndexSize_t Index) {
- assert(!isIRGenerationDisabled());
if (Index >= Func->getNumNodes()) {
std::string Buffer;
raw_string_ostream StrBuf(Buffer);
@@ -1503,7 +1469,6 @@ private:
// Index corresponds to a branch instruction. Hence, if the branch references
// the entry block, it also generates a corresponding error.
Ice::CfgNode *getBranchBasicBlock(NaClBcIndexSize_t Index) {
- assert(!isIRGenerationDisabled());
if (Index == 0) {
Error("Branch to entry block not allowed");
}
@@ -1512,7 +1477,6 @@ private:
// Generate an instruction variable with type Ty.
Ice::Variable *createInstVar(Ice::Type Ty) {
- assert(!isIRGenerationDisabled());
if (Ty == Ice::IceType_void) {
Error("Can't define instruction value using type void");
// Recover since we can't throw an exception.
@@ -1523,7 +1487,6 @@ private:
// Generates the next available local variable using the given type.
Ice::Variable *getNextInstVar(Ice::Type Ty) {
- assert(!isIRGenerationDisabled());
assert(NextLocalInstIndex >= CachedNumGlobalValueIDs);
// Before creating one, see if a forwardtyperef has already defined it.
NaClBcIndexSize_t LocalIndex = NextLocalInstIndex - CachedNumGlobalValueIDs;
@@ -1566,7 +1529,7 @@ private:
// Sets element Index (in the local operands list) to Op.
void setOperand(NaClBcIndexSize_t Index, Ice::Operand *Op) {
- assert(Op || isIRGenerationDisabled());
+ assert(Op);
// Check if simple push works.
NaClBcIndexSize_t LocalIndex = Index - CachedNumGlobalValueIDs;
if (LocalIndex == LocalOperands.size()) {
@@ -2134,8 +2097,6 @@ void FunctionParser::ExitBlock() {
// Check if the last instruction in the function was terminating.
if (!InstIsTerminating) {
Error("Last instruction in function not terminator");
- if (isIRGenerationDisabled())
- return;
// Recover by inserting an unreachable instruction.
CurrentNode->appendInst(Ice::InstUnreachable::create(Func.get()));
}
@@ -2147,8 +2108,6 @@ void FunctionParser::ExitBlock() {
<< " basic blocks, but defined " << CurrentBbIndex << ".";
Error(StrBuf.str());
}
- if (isIRGenerationDisabled())
- return;
// Before translating, check for blocks without instructions, and insert
// unreachable. This shouldn't happen, but be safe.
size_t Index = 0;
@@ -2183,8 +2142,7 @@ void FunctionParser::ProcessRecord() {
if (InstIsTerminating) {
InstIsTerminating = false;
++CurrentBbIndex;
- if (!isIRGenerationDisabled())
- CurrentNode = getBasicBlock(CurrentBbIndex);
+ CurrentNode = getBasicBlock(CurrentBbIndex);
}
// The base index for relative indexing.
NaClBcIndexSize_t BaseIndex = getNextInstIndex();
@@ -2217,8 +2175,6 @@ void FunctionParser::ProcessRecord() {
}
DeclaredNumberBbs = NumBbs;
- if (isIRGenerationDisabled())
- return;
// Install the basic blocks, skipping bb0 which was created in the
// constructor.
for (size_t i = 1; i < NumBbs; ++i)
@@ -2231,11 +2187,6 @@ void FunctionParser::ProcessRecord() {
return;
Ice::Operand *Op1 = getRelativeOperand(Values[0], BaseIndex);
Ice::Operand *Op2 = getRelativeOperand(Values[1], BaseIndex);
- if (isIRGenerationDisabled()) {
- assert(Op1 == nullptr && Op2 == nullptr);
- setNextLocalInstIndex(nullptr);
- return;
- }
Ice::Type Type1 = Op1->getType();
Ice::Type Type2 = Op2->getType();
if (Type1 != Type2) {
@@ -2263,11 +2214,6 @@ void FunctionParser::ProcessRecord() {
Ice::Operand *Src = getRelativeOperand(Values[0], BaseIndex);
Ice::Type CastType = Context->getSimpleTypeByID(Values[1]);
Ice::InstCast::OpKind CastKind;
- if (isIRGenerationDisabled()) {
- assert(Src == nullptr);
- setNextLocalInstIndex(nullptr);
- return;
- }
if (!convertCastOpToIceOp(Values[2], Src->getType(), CastType, CastKind)) {
appendErrorInstruction(CastType);
return;
@@ -2283,11 +2229,6 @@ void FunctionParser::ProcessRecord() {
Ice::Operand *ThenVal = getRelativeOperand(Values[0], BaseIndex);
Ice::Operand *ElseVal = getRelativeOperand(Values[1], BaseIndex);
Ice::Operand *CondVal = getRelativeOperand(Values[2], BaseIndex);
- if (isIRGenerationDisabled()) {
- assert(ThenVal == nullptr && ElseVal == nullptr && CondVal == nullptr);
- setNextLocalInstIndex(nullptr);
- return;
- }
Ice::Type ThenType = ThenVal->getType();
Ice::Type ElseType = ElseVal->getType();
if (ThenType != ElseType) {
@@ -2331,11 +2272,6 @@ void FunctionParser::ProcessRecord() {
return;
Ice::Operand *Vec = getRelativeOperand(Values[0], BaseIndex);
Ice::Operand *Index = getRelativeOperand(Values[1], BaseIndex);
- if (isIRGenerationDisabled()) {
- assert(Vec == nullptr && Index == nullptr);
- setNextLocalInstIndex(nullptr);
- return;
- }
Ice::Type VecType = Vec->getType();
VectorIndexCheckValue IndexCheckValue = validateVectorIndex(Vec, Index);
if (IndexCheckValue != VectorIndexValid) {
@@ -2359,11 +2295,6 @@ void FunctionParser::ProcessRecord() {
Ice::Operand *Vec = getRelativeOperand(Values[0], BaseIndex);
Ice::Operand *Elt = getRelativeOperand(Values[1], BaseIndex);
Ice::Operand *Index = getRelativeOperand(Values[2], BaseIndex);
- if (isIRGenerationDisabled()) {
- assert(Vec == nullptr && Elt == nullptr && Index == nullptr);
- setNextLocalInstIndex(nullptr);
- return;
- }
Ice::Type VecType = Vec->getType();
VectorIndexCheckValue IndexCheckValue = validateVectorIndex(Vec, Index);
if (IndexCheckValue != VectorIndexValid) {
@@ -2397,11 +2328,6 @@ void FunctionParser::ProcessRecord() {
return;
Ice::Operand *Op1 = getRelativeOperand(Values[0], BaseIndex);
Ice::Operand *Op2 = getRelativeOperand(Values[1], BaseIndex);
- if (isIRGenerationDisabled()) {
- assert(Op1 == nullptr && Op2 == nullptr);
- setNextLocalInstIndex(nullptr);
- return;
- }
Ice::Type Op1Type = Op1->getType();
Ice::Type Op2Type = Op2->getType();
Ice::Type DestType = getCompareResultType(Op1Type);
@@ -2463,15 +2389,9 @@ void FunctionParser::ProcessRecord() {
if (!isValidRecordSizeInRange(0, 1, "return"))
return;
if (Values.empty()) {
- if (isIRGenerationDisabled())
- return;
CurrentNode->appendInst(Ice::InstRet::create(Func.get()));
} else {
Ice::Operand *RetVal = getRelativeOperand(Values[0], BaseIndex);
- if (isIRGenerationDisabled()) {
- assert(RetVal == nullptr);
- return;
- }
CurrentNode->appendInst(Ice::InstRet::create(Func.get(), RetVal));
}
return;
@@ -2480,8 +2400,6 @@ void FunctionParser::ProcessRecord() {
InstIsTerminating = true;
if (Values.size() == 1) {
// BR: [bb#]
- if (isIRGenerationDisabled())
- return;
Ice::CfgNode *Block = getBranchBasicBlock(Values[0]);
if (Block == nullptr)
return;
@@ -2491,10 +2409,6 @@ void FunctionParser::ProcessRecord() {
if (!isValidRecordSize(3, "branch"))
return;
Ice::Operand *Cond = getRelativeOperand(Values[2], BaseIndex);
- if (isIRGenerationDisabled()) {
- assert(Cond == nullptr);
- return;
- }
if (Cond->getType() != Ice::IceType_i1) {
std::string Buffer;
raw_string_ostream StrBuf(Buffer);
@@ -2535,10 +2449,7 @@ void FunctionParser::ProcessRecord() {
Ice::SizeT BitWidth = Ice::getScalarIntBitWidth(CondTy);
Ice::Operand *Cond = getRelativeOperand(Values[1], BaseIndex);
- const bool isIRGenDisabled = isIRGenerationDisabled();
- if (isIRGenDisabled) {
- assert(Cond == nullptr);
- } else if (CondTy != Cond->getType()) {
+ if (CondTy != Cond->getType()) {
std::string Buffer;
raw_string_ostream StrBuf(Buffer);
StrBuf << "Case condition expects type " << CondTy
@@ -2546,8 +2457,7 @@ void FunctionParser::ProcessRecord() {
Error(StrBuf.str());
return;
}
- Ice::CfgNode *DefaultLabel =
- isIRGenDisabled ? nullptr : getBranchBasicBlock(Values[2]);
+ Ice::CfgNode *DefaultLabel = getBranchBasicBlock(Values[2]);
if (DefaultLabel == nullptr)
return;
uint64_t NumCasesRaw = Values[3];
@@ -2564,9 +2474,7 @@ void FunctionParser::ProcessRecord() {
if (!isValidRecordSize(4 + NumCases * 4, "switch"))
return;
std::unique_ptr<Ice::InstSwitch> Switch(
- isIRGenDisabled ? nullptr
- : Ice::InstSwitch::create(Func.get(), NumCases, Cond,
- DefaultLabel));
+ Ice::InstSwitch::create(Func.get(), NumCases, Cond, DefaultLabel));
unsigned ValCaseIndex = 4; // index to beginning of case entry.
for (uint32_t CaseIndex = 0; CaseIndex < NumCases;
++CaseIndex, ValCaseIndex += 4) {
@@ -2580,15 +2488,11 @@ void FunctionParser::ProcessRecord() {
}
BitcodeInt Value(BitWidth,
NaClDecodeSignRotatedValue(Values[ValCaseIndex + 2]));
- if (isIRGenDisabled)
- continue;
Ice::CfgNode *Label = getBranchBasicBlock(Values[ValCaseIndex + 3]);
if (Label == nullptr)
return;
Switch->addBranch(CaseIndex, Value.getSExtValue(), Label);
}
- if (isIRGenDisabled)
- return;
CurrentNode->appendInst(Switch.release());
return;
}
@@ -2597,8 +2501,6 @@ void FunctionParser::ProcessRecord() {
InstIsTerminating = true;
if (!isValidRecordSize(0, "unreachable"))
return;
- if (isIRGenerationDisabled())
- return;
CurrentNode->appendInst(Ice::InstUnreachable::create(Func.get()));
return;
}
@@ -2620,15 +2522,6 @@ void FunctionParser::ProcessRecord() {
Error("Phi record using type void not allowed");
return;
}
- if (isIRGenerationDisabled()) {
- // Verify arguments are defined before quitting.
- for (unsigned i = 1; i < Values.size(); i += 2) {
- assert(getRelativeOperand(NaClDecodeSignRotatedValue(Values[i]),
- BaseIndex) == nullptr);
- }
- setNextLocalInstIndex(nullptr);
- return;
- }
Ice::Variable *Dest = getNextInstVar(Ty);
Ice::InstPhi *Phi =
Ice::InstPhi::create(Func.get(), Values.size() >> 1, Dest);
@@ -2655,11 +2548,6 @@ void FunctionParser::ProcessRecord() {
return;
Ice::Operand *ByteCount = getRelativeOperand(Values[0], BaseIndex);
uint32_t Alignment = Context->extractAlignment(this, "Alloca", Values[1]);
- if (isIRGenerationDisabled()) {
- assert(ByteCount == nullptr);
- setNextLocalInstIndex(nullptr);
- return;
- }
Ice::Type PtrTy = Ice::getPointerType();
if (ByteCount->getType() != Ice::IceType_i32) {
std::string Buffer;
@@ -2680,11 +2568,6 @@ void FunctionParser::ProcessRecord() {
Ice::Operand *Address = getRelativeOperand(Values[0], BaseIndex);
Ice::Type Ty = Context->getSimpleTypeByID(Values[2]);
uint32_t Alignment = Context->extractAlignment(this, "Load", Values[1]);
- if (isIRGenerationDisabled()) {
- assert(Address == nullptr);
- setNextLocalInstIndex(nullptr);
- return;
- }
if (!isValidPointerType(Address, "Load")) {
appendErrorInstruction(Ty);
return;
@@ -2704,10 +2587,6 @@ void FunctionParser::ProcessRecord() {
Ice::Operand *Address = getRelativeOperand(Values[0], BaseIndex);
Ice::Operand *Value = getRelativeOperand(Values[1], BaseIndex);
uint32_t Alignment = Context->extractAlignment(this, "Store", Values[2]);
- if (isIRGenerationDisabled()) {
- assert(Address == nullptr && Value == nullptr);
- return;
- }
if (!isValidPointerType(Address, "Store"))
return;
if (!isValidLoadStoreAlignment(Alignment, Value->getType(), "Store"))
@@ -2785,19 +2664,17 @@ void FunctionParser::ProcessRecord() {
} else { // Record.GetCode() == naclbitc::FUNC_CODE_INST_CALL_INDIRECT
// There is no signature. Assume defined by parameter types.
ReturnType = Context->getSimpleTypeByID(Values[2]);
- if (!isIRGenerationDisabled() && Callee != nullptr)
+ if (Callee != nullptr)
isValidPointerType(Callee, "Call indirect");
}
- if (Callee == nullptr && !isIRGenerationDisabled())
+ if (Callee == nullptr)
return;
// Extract out the the call parameters.
SmallVector<Ice::Operand *, 8> Params;
for (Ice::SizeT Index = ParamsStartIndex; Index < Values.size(); ++Index) {
Ice::Operand *Op = getRelativeOperand(Values[Index], BaseIndex);
- if (isIRGenerationDisabled())
- continue;
if (Op == nullptr) {
std::string Buffer;
raw_string_ostream StrBuf(Buffer);
@@ -2821,12 +2698,6 @@ void FunctionParser::ProcessRecord() {
ReturnType = Ice::IceType_i32;
}
- if (isIRGenerationDisabled()) {
- if (ReturnType != Ice::IceType_void)
- setNextLocalInstIndex(nullptr);
- return;
- }
-
// Type check call parameters.
for (Ice::SizeT Index = 0; Index < Params.size(); ++Index) {
Ice::Operand *Op = Params[Index];
@@ -2883,8 +2754,7 @@ void FunctionParser::ProcessRecord() {
if (!isValidRecordSize(2, "forward type ref"))
return;
Ice::Type OpType = Context->getSimpleTypeByID(Values[1]);
- setOperand(Values[0],
- isIRGenerationDisabled() ? nullptr : createInstVar(OpType));
+ setOperand(Values[0], createInstVar(OpType));
return;
}
default:
@@ -2949,10 +2819,6 @@ void ConstantsParser::ProcessRecord() {
return;
if (!isValidNextConstantType())
return;
- if (isIRGenerationDisabled()) {
- FuncParser->setNextConstantID(nullptr);
- return;
- }
FuncParser->setNextConstantID(
getContext()->getConstantUndef(NextConstantType));
return;
@@ -2963,10 +2829,6 @@ void ConstantsParser::ProcessRecord() {
return;
if (!isValidNextConstantType())
return;
- if (isIRGenerationDisabled()) {
- FuncParser->setNextConstantID(nullptr);
- return;
- }
if (Ice::isScalarIntegerType(NextConstantType)) {
BitcodeInt Value(Ice::getScalarIntBitWidth(NextConstantType),
NaClDecodeSignRotatedValue(Values[0]));
@@ -2989,10 +2851,6 @@ void ConstantsParser::ProcessRecord() {
return;
if (!isValidNextConstantType())
return;
- if (isIRGenerationDisabled()) {
- FuncParser->setNextConstantID(nullptr);
- return;
- }
switch (NextConstantType) {
case Ice::IceType_f32: {
const BitcodeInt Value(32, static_cast<uint32_t>(Values[0]));
@@ -3067,8 +2925,6 @@ void FunctionValuesymtabParser::setValueName(NaClBcIndexSize_t Index,
reportUnableToAssign("Global value", Index, Name);
return;
}
- if (isIRGenerationDisabled())
- return;
Ice::Operand *Op = getFunctionParser()->getOperand(Index);
if (auto *V = dyn_cast<Ice::Variable>(Op)) {
if (Ice::BuildDefs::dump()) {
@@ -3084,8 +2940,6 @@ void FunctionValuesymtabParser::setBbName(NaClBcIndexSize_t Index,
StringType &Name) {
if (!Ice::BuildDefs::dump())
return;
- if (isIRGenerationDisabled())
- return;
if (Index >= getFunctionParser()->getFunc()->getNumNodes()) {
reportUnableToAssign("Basic block", Index, Name);
return;
« no previous file with comments | « src/IceOperand.h ('k') | tests_lit/parse_errs/bad-bb-size.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698