Fixes to unbreak the BUILD.gn build

Change-Id: I0077bb103fc6940c1af029a65b7069cb6fbec3d9
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/21201
Reviewed-by: David Neto <dneto@google.com>
Reviewed-by: dan sinclair <dsinclair@google.com>
This commit is contained in:
Ryan Harrison 2020-05-06 21:49:55 +00:00 committed by dan sinclair
parent a4e6858b94
commit ace7a13662
7 changed files with 61 additions and 49 deletions

View File

@ -429,7 +429,7 @@ int main(int argc, const char** argv) {
}
}
if (options.format == Format::kSpirv) {
auto w = static_cast<tint::writer::spirv::Generator*>(writer.get());
auto* w = static_cast<tint::writer::spirv::Generator*>(writer.get());
if (!WriteFile(options.output_file, "wb", w->result())) {
return 1;
}

View File

@ -325,6 +325,11 @@ class StructuredTraverser {
} // namespace
BlockInfo::BlockInfo(const spvtools::opt::BasicBlock& bb)
: basic_block(&bb), id(bb.id()) {}
BlockInfo::~BlockInfo() {}
FunctionEmitter::FunctionEmitter(ParserImpl* pi,
const spvtools::opt::Function& function)
: parser_impl_(*pi),

View File

@ -74,8 +74,8 @@ enum class EdgeKind {
struct BlockInfo {
/// Constructor
/// @param bb internal representation of the basic block
explicit BlockInfo(const spvtools::opt::BasicBlock& bb)
: basic_block(&bb), id(bb.id()) {}
explicit BlockInfo(const spvtools::opt::BasicBlock& bb);
~BlockInfo();
/// The internal representation of the basic block.
const spvtools::opt::BasicBlock* basic_block;

View File

@ -3944,7 +3944,7 @@ TEST_F(SpvParserTest, FindSwitchCaseHeaders_DefaultIsMerge) {
ASSERT_NE(bi99, nullptr);
EXPECT_EQ(bi99->case_head_for, nullptr);
ASSERT_NE(bi99->default_head_for, nullptr);
EXPECT_EQ(bi99->default_head_for->begin_id, 10);
EXPECT_EQ(bi99->default_head_for->begin_id, 10u);
EXPECT_TRUE(bi99->default_is_merge);
EXPECT_EQ(bi99->case_values.get(), nullptr);
}
@ -3982,7 +3982,7 @@ TEST_F(SpvParserTest, FindSwitchCaseHeaders_DefaultIsNotMerge) {
ASSERT_NE(bi30, nullptr);
EXPECT_EQ(bi30->case_head_for, nullptr);
ASSERT_NE(bi30->default_head_for, nullptr);
EXPECT_EQ(bi30->default_head_for->begin_id, 10);
EXPECT_EQ(bi30->default_head_for->begin_id, 10u);
EXPECT_FALSE(bi30->default_is_merge);
EXPECT_EQ(bi30->case_values.get(), nullptr);
}
@ -4019,7 +4019,7 @@ TEST_F(SpvParserTest, FindSwitchCaseHeaders_CaseIsNotDefault) {
const auto* bi20 = fe.GetBlockInfo(20);
ASSERT_NE(bi20, nullptr);
ASSERT_NE(bi20->case_head_for, nullptr);
EXPECT_EQ(bi20->case_head_for->begin_id, 10);
EXPECT_EQ(bi20->case_head_for->begin_id, 10u);
EXPECT_EQ(bi20->default_head_for, nullptr);
EXPECT_FALSE(bi20->default_is_merge);
EXPECT_THAT(*(bi20->case_values.get()), UnorderedElementsAre(200));
@ -4054,7 +4054,7 @@ TEST_F(SpvParserTest, FindSwitchCaseHeaders_CaseIsDefault) {
const auto* bi20 = fe.GetBlockInfo(20);
ASSERT_NE(bi20, nullptr);
ASSERT_NE(bi20->case_head_for, nullptr);
EXPECT_EQ(bi20->case_head_for->begin_id, 10);
EXPECT_EQ(bi20->case_head_for->begin_id, 10u);
EXPECT_EQ(bi20->default_head_for, bi20->case_head_for);
EXPECT_FALSE(bi20->default_is_merge);
EXPECT_THAT(*(bi20->case_values.get()), UnorderedElementsAre(200));
@ -4122,7 +4122,7 @@ TEST_F(SpvParserTest, FindSwitchCaseHeaders_ManyValuesWithSameCase) {
const auto* bi20 = fe.GetBlockInfo(20);
ASSERT_NE(bi20, nullptr);
ASSERT_NE(bi20->case_head_for, nullptr);
EXPECT_EQ(bi20->case_head_for->begin_id, 10);
EXPECT_EQ(bi20->case_head_for->begin_id, 10u);
EXPECT_EQ(bi20->default_head_for, nullptr);
EXPECT_FALSE(bi20->default_is_merge);
EXPECT_THAT(*(bi20->case_values.get()), UnorderedElementsAre(200, 300));
@ -4365,7 +4365,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_BackEdge_SingleBlockLoop) {
auto* bi20 = fe.GetBlockInfo(20);
ASSERT_NE(bi20, nullptr);
EXPECT_EQ(bi20->succ_edge.count(20), 1);
EXPECT_EQ(bi20->succ_edge.count(20), 1u);
EXPECT_EQ(bi20->succ_edge[20], EdgeKind::kBack);
}
@ -4397,7 +4397,7 @@ TEST_F(SpvParserTest,
auto* bi40 = fe.GetBlockInfo(40);
ASSERT_NE(bi40, nullptr);
EXPECT_EQ(bi40->succ_edge.count(20), 1);
EXPECT_EQ(bi40->succ_edge.count(20), 1u);
EXPECT_EQ(bi40->succ_edge[20], EdgeKind::kBack);
}
@ -4432,7 +4432,7 @@ TEST_F(SpvParserTest,
auto* bi50 = fe.GetBlockInfo(50);
ASSERT_NE(bi50, nullptr);
EXPECT_EQ(bi50->succ_edge.count(20), 1);
EXPECT_EQ(bi50->succ_edge.count(20), 1u);
EXPECT_EQ(bi50->succ_edge[20], EdgeKind::kBack);
}
@ -4491,7 +4491,7 @@ TEST_F(SpvParserTest,
auto* bi = fe.GetBlockInfo(20);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(99), 1);
EXPECT_EQ(bi->succ_edge.count(99), 1u);
EXPECT_EQ(bi->succ_edge[99], EdgeKind::kLoopBreak);
}
@ -4520,7 +4520,7 @@ TEST_F(SpvParserTest,
auto* bi = fe.GetBlockInfo(20);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(99), 1);
EXPECT_EQ(bi->succ_edge.count(99), 1u);
EXPECT_EQ(bi->succ_edge[99], EdgeKind::kLoopBreak);
}
@ -4548,7 +4548,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_LoopBreak_FromContinueConstructHeader) {
auto* bi = fe.GetBlockInfo(30);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(99), 1);
EXPECT_EQ(bi->succ_edge.count(99), 1u);
EXPECT_EQ(bi->succ_edge[99], EdgeKind::kLoopBreak);
}
@ -4573,7 +4573,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_ToMerge_FromIfHeader) {
auto* bi = fe.GetBlockInfo(20);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(99), 1);
EXPECT_EQ(bi->succ_edge.count(99), 1u);
EXPECT_EQ(bi->succ_edge[99], EdgeKind::kToMerge);
}
@ -4602,13 +4602,13 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_ToMerge_FromIfThenElse) {
// Then clause
auto* bi20 = fe.GetBlockInfo(20);
ASSERT_NE(bi20, nullptr);
EXPECT_EQ(bi20->succ_edge.count(99), 1);
EXPECT_EQ(bi20->succ_edge.count(99), 1u);
EXPECT_EQ(bi20->succ_edge[99], EdgeKind::kToMerge);
// Else clause
auto* bi50 = fe.GetBlockInfo(50);
ASSERT_NE(bi50, nullptr);
EXPECT_EQ(bi50->succ_edge.count(99), 1);
EXPECT_EQ(bi50->succ_edge.count(99), 1u);
EXPECT_EQ(bi50->succ_edge[99], EdgeKind::kToMerge);
}
@ -4633,7 +4633,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_SwitchBreak_FromSwitchCaseDirect) {
auto* bi = fe.GetBlockInfo(10);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(99), 1);
EXPECT_EQ(bi->succ_edge.count(99), 1u);
EXPECT_EQ(bi->succ_edge[99], EdgeKind::kSwitchBreak);
}
@ -4658,7 +4658,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_SwitchBreak_FromSwitchCaseBody) {
auto* bi = fe.GetBlockInfo(20);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(99), 1);
EXPECT_EQ(bi->succ_edge.count(99), 1u);
EXPECT_EQ(bi->succ_edge[99], EdgeKind::kSwitchBreak);
}
@ -4686,7 +4686,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_SwitchBreak_FromSwitchDefaultBody) {
auto* bi = fe.GetBlockInfo(30);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(99), 1);
EXPECT_EQ(bi->succ_edge.count(99), 1u);
EXPECT_EQ(bi->succ_edge[99], EdgeKind::kSwitchBreak);
}
@ -4711,7 +4711,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_SwitchBreak_FromSwitchDefaultIsMerge) {
auto* bi = fe.GetBlockInfo(10);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(99), 1);
EXPECT_EQ(bi->succ_edge.count(99), 1u);
EXPECT_EQ(bi->succ_edge[99], EdgeKind::kSwitchBreak);
}
@ -4742,7 +4742,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_LoopBreak_FromLoopBody) {
auto* bi = fe.GetBlockInfo(30);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(99), 1);
EXPECT_EQ(bi->succ_edge.count(99), 1u);
EXPECT_EQ(bi->succ_edge[99], EdgeKind::kLoopBreak);
}
@ -4776,7 +4776,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_LoopBreak_FromContinueConstructTail) {
auto* bi = fe.GetBlockInfo(60);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(99), 1);
EXPECT_EQ(bi->succ_edge.count(99), 1u);
EXPECT_EQ(bi->succ_edge[99], EdgeKind::kLoopBreak);
}
@ -4807,7 +4807,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_LoopBreak_FromLoopBodyDirect) {
auto* bi = fe.GetBlockInfo(30);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(99), 1);
EXPECT_EQ(bi->succ_edge.count(99), 1u);
EXPECT_EQ(bi->succ_edge[99], EdgeKind::kLoopBreak);
}
@ -4838,7 +4838,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_LoopContinue_LoopBodyToContinue) {
auto* bi = fe.GetBlockInfo(30);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(80), 1);
EXPECT_EQ(bi->succ_edge.count(80), 1u);
EXPECT_EQ(bi->succ_edge[80], EdgeKind::kLoopContinue);
}
@ -4876,7 +4876,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_LoopContinue_FromNestedIf) {
auto* bi = fe.GetBlockInfo(40);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(80), 1);
EXPECT_EQ(bi->succ_edge.count(80), 1u);
EXPECT_EQ(bi->succ_edge[80], EdgeKind::kLoopContinue);
}
@ -4914,7 +4914,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_LoopContinue_ConditionalFromNestedIf) {
auto* bi = fe.GetBlockInfo(40);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(80), 1);
EXPECT_EQ(bi->succ_edge.count(80), 1u);
EXPECT_EQ(bi->succ_edge[80], EdgeKind::kLoopContinue);
}
@ -4953,7 +4953,7 @@ TEST_F(SpvParserTest,
auto* bi = fe.GetBlockInfo(40);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(80), 1);
EXPECT_EQ(bi->succ_edge.count(80), 1u);
EXPECT_EQ(bi->succ_edge[80], EdgeKind::kLoopContinue);
}
@ -5068,7 +5068,7 @@ TEST_F(SpvParserTest,
auto* bi = fe.GetBlockInfo(40);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(80), 1);
EXPECT_EQ(bi->succ_edge.count(80), 1u);
EXPECT_EQ(bi->succ_edge[80], EdgeKind::kLoopContinue);
}
@ -5108,7 +5108,7 @@ TEST_F(
auto* bi = fe.GetBlockInfo(40);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(80), 1);
EXPECT_EQ(bi->succ_edge.count(80), 1u);
EXPECT_EQ(bi->succ_edge[80], EdgeKind::kLoopContinue);
}
@ -5139,7 +5139,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_Fallthrough_CaseTailToCase) {
auto* bi = fe.GetBlockInfo(30);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(40), 1);
EXPECT_EQ(bi->succ_edge.count(40), 1u);
EXPECT_EQ(bi->succ_edge[40], EdgeKind::kCaseFallThrough);
}
@ -5170,7 +5170,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_Fallthrough_CaseTailToDefaultNotMerge) {
auto* bi = fe.GetBlockInfo(30);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(40), 1);
EXPECT_EQ(bi->succ_edge.count(40), 1u);
EXPECT_EQ(bi->succ_edge[40], EdgeKind::kCaseFallThrough);
}
@ -5201,7 +5201,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_Fallthrough_DefaultToCase) {
auto* bi = fe.GetBlockInfo(30);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(40), 1);
EXPECT_EQ(bi->succ_edge.count(40), 1u);
EXPECT_EQ(bi->succ_edge[40], EdgeKind::kCaseFallThrough);
}
@ -5316,7 +5316,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_Forward_IfToThen) {
auto* bi = fe.GetBlockInfo(10);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(20), 1);
EXPECT_EQ(bi->succ_edge.count(20), 1u);
EXPECT_EQ(bi->succ_edge[20], EdgeKind::kForward);
}
@ -5341,7 +5341,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_Forward_IfToElse) {
auto* bi = fe.GetBlockInfo(10);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(30), 1);
EXPECT_EQ(bi->succ_edge.count(30), 1u);
EXPECT_EQ(bi->succ_edge[30], EdgeKind::kForward);
}
@ -5366,7 +5366,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_Forward_SwitchToCase) {
auto* bi = fe.GetBlockInfo(10);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(20), 1);
EXPECT_EQ(bi->succ_edge.count(20), 1u);
EXPECT_EQ(bi->succ_edge[20], EdgeKind::kForward);
}
@ -5394,7 +5394,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_Forward_SwitchToDefaultNotMerge) {
auto* bi = fe.GetBlockInfo(10);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(30), 1);
EXPECT_EQ(bi->succ_edge.count(30), 1u);
EXPECT_EQ(bi->succ_edge[30], EdgeKind::kForward);
}
@ -5425,7 +5425,7 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_Forward_LoopHeadToBody) {
auto* bi = fe.GetBlockInfo(20);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(30), 1);
EXPECT_EQ(bi->succ_edge.count(30), 1u);
EXPECT_EQ(bi->succ_edge[30], EdgeKind::kForward);
}
@ -5713,9 +5713,9 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_Pathological_Forward_LoopHeadSplitBody) {
auto* bi = fe.GetBlockInfo(20);
ASSERT_NE(bi, nullptr);
EXPECT_EQ(bi->succ_edge.count(30), 1);
EXPECT_EQ(bi->succ_edge.count(30), 1u);
EXPECT_EQ(bi->succ_edge[30], EdgeKind::kForward);
EXPECT_EQ(bi->succ_edge.count(50), 1);
EXPECT_EQ(bi->succ_edge.count(50), 1u);
EXPECT_EQ(bi->succ_edge[50], EdgeKind::kForward);
}
@ -5750,22 +5750,22 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_Pathological_Forward_Premerge) {
auto* bi20 = fe.GetBlockInfo(20);
ASSERT_NE(bi20, nullptr);
EXPECT_EQ(bi20->succ_edge.count(50), 1);
EXPECT_EQ(bi20->succ_edge.count(50), 1u);
EXPECT_EQ(bi20->succ_edge[50], EdgeKind::kForward);
auto* bi30 = fe.GetBlockInfo(30);
ASSERT_NE(bi30, nullptr);
EXPECT_EQ(bi30->succ_edge.count(50), 1);
EXPECT_EQ(bi30->succ_edge.count(50), 1u);
EXPECT_EQ(bi30->succ_edge[50], EdgeKind::kForward);
auto* bi50 = fe.GetBlockInfo(50);
ASSERT_NE(bi50, nullptr);
EXPECT_EQ(bi50->succ_edge.count(60), 1);
EXPECT_EQ(bi50->succ_edge.count(60), 1u);
EXPECT_EQ(bi50->succ_edge[60], EdgeKind::kForward);
auto* bi60 = fe.GetBlockInfo(60);
ASSERT_NE(bi60, nullptr);
EXPECT_EQ(bi60->succ_edge.count(99), 1);
EXPECT_EQ(bi60->succ_edge.count(99), 1u);
EXPECT_EQ(bi60->succ_edge[99], EdgeKind::kToMerge);
}
@ -5791,12 +5791,12 @@ TEST_F(SpvParserTest, ClassifyCFGEdges_Pathological_Forward_Regardless) {
auto* bi10 = fe.GetBlockInfo(10);
ASSERT_NE(bi10, nullptr);
EXPECT_EQ(bi10->succ_edge.count(20), 1);
EXPECT_EQ(bi10->succ_edge.count(20), 1u);
EXPECT_EQ(bi10->succ_edge[20], EdgeKind::kForward);
auto* bi20 = fe.GetBlockInfo(20);
ASSERT_NE(bi20, nullptr);
EXPECT_EQ(bi20->succ_edge.count(99), 1);
EXPECT_EQ(bi20->succ_edge.count(99), 1u);
EXPECT_EQ(bi20->succ_edge[99], EdgeKind::kToMerge);
}

View File

@ -229,7 +229,7 @@ TEST_F(SpvUnaryLogicalTest, LogicalNot_Vector) {
OpReturn
OpFunctionEnd
)";
auto p = parser(test::Assemble(assembly));
auto* p = parser(test::Assemble(assembly));
ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions());
FunctionEmitter fe(p, *spirv_function(100));
EXPECT_TRUE(fe.EmitBody()) << p->error();

View File

@ -126,6 +126,10 @@ uint32_t IndexFromName(char name) {
} // namespace
Builder::AccessorInfo::AccessorInfo() : source_id(0), source_type(nullptr) {}
Builder::AccessorInfo::~AccessorInfo() {}
Builder::Builder(ast::Module* mod) : mod_(mod), scope_stack_({}) {}
Builder::~Builder() = default;

View File

@ -40,15 +40,18 @@ class Builder {
public:
/// Contains information for generating accessor chains
struct AccessorInfo {
AccessorInfo();
~AccessorInfo();
/// The ID of the current chain source. The chain source may change as we
/// evaluate the access chain. The chain source always points to the ID
/// which we will use to evaluate the current set of accessors. This maybe
/// the original variable, or maybe an intermediary if we had to evaulate
/// the access chain early (in the case of a swizzle of an access chain).
uint32_t source_id = 0;
uint32_t source_id;
/// The type of the current chain source. This type matches the deduced
/// result_type of the current source defined above.
ast::type::Type* source_type = nullptr;
ast::type::Type* source_type;
/// A list of access chain indices to emit. Note, we _only_ have access
/// chain indices if the source is pointer.
std::vector<uint32_t> access_chain_indices;