reader/spirv: Fix permissive GCC warning
... about getters having the same name as the type they return. Prefix getters with `Get`, remove unused ones. Also remove the cases field, the compiler helpfully now tells us it is unused. Change-Id: I7e3fcdae3818cee5aae8b70b48e9b0507a8d3b45 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/35743 Commit-Queue: Ben Clayton <bclayton@google.com> Commit-Queue: David Neto <dneto@google.com> Auto-Submit: Ben Clayton <bclayton@google.com> Reviewed-by: David Neto <dneto@google.com> Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
This commit is contained in:
parent
035c524486
commit
d94cbf6023
|
@ -711,7 +711,7 @@ FunctionEmitter::FunctionEmitter(ParserImpl* pi,
|
||||||
function_(function),
|
function_(function),
|
||||||
i32_(ast_module_.create<ast::type::I32>()),
|
i32_(ast_module_.create<ast::type::I32>()),
|
||||||
ep_info_(ep_info) {
|
ep_info_(ep_info) {
|
||||||
PushNewStatementBlock(nullptr, 0, nullptr, nullptr);
|
PushNewStatementBlock(nullptr, 0, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
FunctionEmitter::FunctionEmitter(ParserImpl* pi,
|
FunctionEmitter::FunctionEmitter(ParserImpl* pi,
|
||||||
|
@ -721,14 +721,12 @@ FunctionEmitter::FunctionEmitter(ParserImpl* pi,
|
||||||
FunctionEmitter::~FunctionEmitter() = default;
|
FunctionEmitter::~FunctionEmitter() = default;
|
||||||
|
|
||||||
FunctionEmitter::StatementBlock::StatementBlock(
|
FunctionEmitter::StatementBlock::StatementBlock(
|
||||||
const spirv::Construct* construct,
|
const Construct* construct,
|
||||||
uint32_t end_id,
|
uint32_t end_id,
|
||||||
FunctionEmitter::CompletionAction completion_action,
|
FunctionEmitter::CompletionAction completion_action)
|
||||||
ast::CaseStatementList* cases)
|
|
||||||
: construct_(construct),
|
: construct_(construct),
|
||||||
end_id_(end_id),
|
end_id_(end_id),
|
||||||
completion_action_(completion_action),
|
completion_action_(completion_action) {}
|
||||||
cases_(cases) {}
|
|
||||||
|
|
||||||
FunctionEmitter::StatementBlock::StatementBlock(StatementBlock&& other) =
|
FunctionEmitter::StatementBlock::StatementBlock(StatementBlock&& other) =
|
||||||
default;
|
default;
|
||||||
|
@ -758,10 +756,8 @@ void FunctionEmitter::StatementBlock::Add(ast::Statement* statement) {
|
||||||
|
|
||||||
void FunctionEmitter::PushNewStatementBlock(const Construct* construct,
|
void FunctionEmitter::PushNewStatementBlock(const Construct* construct,
|
||||||
uint32_t end_id,
|
uint32_t end_id,
|
||||||
ast::CaseStatementList* cases,
|
|
||||||
CompletionAction action) {
|
CompletionAction action) {
|
||||||
statements_stack_.emplace_back(
|
statements_stack_.emplace_back(StatementBlock{construct, end_id, action});
|
||||||
StatementBlock{construct, end_id, action, cases});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FunctionEmitter::PushGuard(const std::string& guard_name,
|
void FunctionEmitter::PushGuard(const std::string& guard_name,
|
||||||
|
@ -778,7 +774,7 @@ void FunctionEmitter::PushGuard(const std::string& guard_name,
|
||||||
auto* builder = AddStatementBuilder<IfStatementBuilder>(cond);
|
auto* builder = AddStatementBuilder<IfStatementBuilder>(cond);
|
||||||
|
|
||||||
PushNewStatementBlock(
|
PushNewStatementBlock(
|
||||||
top.Construct(), end_id, nullptr, [=](const ast::StatementList& stmts) {
|
top.GetConstruct(), end_id, [=](const ast::StatementList& stmts) {
|
||||||
builder->body = create<ast::BlockStatement>(Source{}, stmts);
|
builder->body = create<ast::BlockStatement>(Source{}, stmts);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -791,7 +787,7 @@ void FunctionEmitter::PushTrueGuard(uint32_t end_id) {
|
||||||
auto* builder = AddStatementBuilder<IfStatementBuilder>(cond);
|
auto* builder = AddStatementBuilder<IfStatementBuilder>(cond);
|
||||||
|
|
||||||
PushNewStatementBlock(
|
PushNewStatementBlock(
|
||||||
top.Construct(), end_id, nullptr, [=](const ast::StatementList& stmts) {
|
top.GetConstruct(), end_id, [=](const ast::StatementList& stmts) {
|
||||||
builder->body = create<ast::BlockStatement>(Source{}, stmts);
|
builder->body = create<ast::BlockStatement>(Source{}, stmts);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -800,7 +796,7 @@ const ast::StatementList FunctionEmitter::ast_body() {
|
||||||
assert(!statements_stack_.empty());
|
assert(!statements_stack_.empty());
|
||||||
auto& entry = statements_stack_[0];
|
auto& entry = statements_stack_[0];
|
||||||
entry.Finalize(&ast_module_);
|
entry.Finalize(&ast_module_);
|
||||||
return entry.Statements();
|
return entry.GetStatements();
|
||||||
}
|
}
|
||||||
|
|
||||||
ast::Statement* FunctionEmitter::AddStatement(ast::Statement* statement) {
|
ast::Statement* FunctionEmitter::AddStatement(ast::Statement* statement) {
|
||||||
|
@ -813,7 +809,7 @@ ast::Statement* FunctionEmitter::AddStatement(ast::Statement* statement) {
|
||||||
|
|
||||||
ast::Statement* FunctionEmitter::LastStatement() {
|
ast::Statement* FunctionEmitter::LastStatement() {
|
||||||
assert(!statements_stack_.empty());
|
assert(!statements_stack_.empty());
|
||||||
auto& statement_list = statements_stack_.back().Statements();
|
auto& statement_list = statements_stack_.back().GetStatements();
|
||||||
assert(!statement_list.empty());
|
assert(!statement_list.empty());
|
||||||
return statement_list.back();
|
return statement_list.back();
|
||||||
}
|
}
|
||||||
|
@ -845,7 +841,7 @@ bool FunctionEmitter::Emit() {
|
||||||
|
|
||||||
statements_stack_[0].Finalize(&ast_module_);
|
statements_stack_[0].Finalize(&ast_module_);
|
||||||
|
|
||||||
auto& statements = statements_stack_[0].Statements();
|
auto& statements = statements_stack_[0].GetStatements();
|
||||||
auto* body = create<ast::BlockStatement>(Source{}, statements);
|
auto* body = create<ast::BlockStatement>(Source{}, statements);
|
||||||
ast_module_.AddFunction(
|
ast_module_.AddFunction(
|
||||||
create<ast::Function>(decl.source, ast_module_.RegisterSymbol(decl.name),
|
create<ast::Function>(decl.source, ast_module_.RegisterSymbol(decl.name),
|
||||||
|
@ -854,7 +850,7 @@ bool FunctionEmitter::Emit() {
|
||||||
|
|
||||||
// Maintain the invariant by repopulating the one and only element.
|
// Maintain the invariant by repopulating the one and only element.
|
||||||
statements_stack_.clear();
|
statements_stack_.clear();
|
||||||
PushNewStatementBlock(constructs_[0].get(), 0, nullptr, nullptr);
|
PushNewStatementBlock(constructs_[0].get(), 0, nullptr);
|
||||||
|
|
||||||
return success();
|
return success();
|
||||||
}
|
}
|
||||||
|
@ -2046,7 +2042,7 @@ bool FunctionEmitter::EmitFunctionBodyStatements() {
|
||||||
bool FunctionEmitter::EmitBasicBlock(const BlockInfo& block_info) {
|
bool FunctionEmitter::EmitBasicBlock(const BlockInfo& block_info) {
|
||||||
// Close off previous constructs.
|
// Close off previous constructs.
|
||||||
while (!statements_stack_.empty() &&
|
while (!statements_stack_.empty() &&
|
||||||
(statements_stack_.back().EndId() == block_info.id)) {
|
(statements_stack_.back().GetEndId() == block_info.id)) {
|
||||||
statements_stack_.back().Finalize(&ast_module_);
|
statements_stack_.back().Finalize(&ast_module_);
|
||||||
statements_stack_.pop_back();
|
statements_stack_.pop_back();
|
||||||
}
|
}
|
||||||
|
@ -2060,7 +2056,7 @@ bool FunctionEmitter::EmitBasicBlock(const BlockInfo& block_info) {
|
||||||
std::vector<const Construct*> entering_constructs; // inner most comes first
|
std::vector<const Construct*> entering_constructs; // inner most comes first
|
||||||
{
|
{
|
||||||
auto* here = block_info.construct;
|
auto* here = block_info.construct;
|
||||||
auto* const top_construct = statements_stack_.back().Construct();
|
auto* const top_construct = statements_stack_.back().GetConstruct();
|
||||||
while (here != top_construct) {
|
while (here != top_construct) {
|
||||||
// Only enter a construct at its header block.
|
// Only enter a construct at its header block.
|
||||||
if (here->begin_id == block_info.id) {
|
if (here->begin_id == block_info.id) {
|
||||||
|
@ -2290,7 +2286,7 @@ bool FunctionEmitter::EmitIfStart(const BlockInfo& block_info) {
|
||||||
auto push_else = [this, builder, else_end, construct]() {
|
auto push_else = [this, builder, else_end, construct]() {
|
||||||
// Push the else clause onto the stack first.
|
// Push the else clause onto the stack first.
|
||||||
PushNewStatementBlock(
|
PushNewStatementBlock(
|
||||||
construct, else_end, nullptr, [=](const ast::StatementList& stmts) {
|
construct, else_end, [=](const ast::StatementList& stmts) {
|
||||||
// Only set the else-clause if there are statements to fill it.
|
// Only set the else-clause if there are statements to fill it.
|
||||||
if (!stmts.empty()) {
|
if (!stmts.empty()) {
|
||||||
// The "else" consists of the statement list from the top of
|
// The "else" consists of the statement list from the top of
|
||||||
|
@ -2337,7 +2333,7 @@ bool FunctionEmitter::EmitIfStart(const BlockInfo& block_info) {
|
||||||
|
|
||||||
// Push the then clause onto the stack.
|
// Push the then clause onto the stack.
|
||||||
PushNewStatementBlock(
|
PushNewStatementBlock(
|
||||||
construct, then_end, nullptr, [=](const ast::StatementList& stmts) {
|
construct, then_end, [=](const ast::StatementList& stmts) {
|
||||||
builder->body = create<ast::BlockStatement>(Source{}, stmts);
|
builder->body = create<ast::BlockStatement>(Source{}, stmts);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -2361,7 +2357,7 @@ bool FunctionEmitter::EmitSwitchStart(const BlockInfo& block_info) {
|
||||||
|
|
||||||
// Grab a pointer to the case list. It will get buried in the statement block
|
// Grab a pointer to the case list. It will get buried in the statement block
|
||||||
// stack.
|
// stack.
|
||||||
PushNewStatementBlock(construct, construct->end_id, &swch->cases, nullptr);
|
PushNewStatementBlock(construct, construct->end_id, nullptr);
|
||||||
|
|
||||||
// We will push statement-blocks onto the stack to gather the statements in
|
// We will push statement-blocks onto the stack to gather the statements in
|
||||||
// the default clause and cases clauses. Determine the list of blocks
|
// the default clause and cases clauses. Determine the list of blocks
|
||||||
|
@ -2433,7 +2429,7 @@ bool FunctionEmitter::EmitSwitchStart(const BlockInfo& block_info) {
|
||||||
auto case_idx = swch->cases.size();
|
auto case_idx = swch->cases.size();
|
||||||
swch->cases.emplace_back(nullptr);
|
swch->cases.emplace_back(nullptr);
|
||||||
PushNewStatementBlock(
|
PushNewStatementBlock(
|
||||||
construct, end_id, nullptr, [=](const ast::StatementList& stmts) {
|
construct, end_id, [=](const ast::StatementList& stmts) {
|
||||||
auto* body = create<ast::BlockStatement>(Source{}, stmts);
|
auto* body = create<ast::BlockStatement>(Source{}, stmts);
|
||||||
swch->cases[case_idx] =
|
swch->cases[case_idx] =
|
||||||
create<ast::CaseStatement>(Source{}, selectors, body);
|
create<ast::CaseStatement>(Source{}, selectors, body);
|
||||||
|
@ -2461,11 +2457,10 @@ bool FunctionEmitter::EmitSwitchStart(const BlockInfo& block_info) {
|
||||||
|
|
||||||
bool FunctionEmitter::EmitLoopStart(const Construct* construct) {
|
bool FunctionEmitter::EmitLoopStart(const Construct* construct) {
|
||||||
auto* builder = AddStatementBuilder<LoopStatementBuilder>();
|
auto* builder = AddStatementBuilder<LoopStatementBuilder>();
|
||||||
PushNewStatementBlock(construct, construct->end_id, nullptr,
|
PushNewStatementBlock(
|
||||||
[=](const ast::StatementList& stmts) {
|
construct, construct->end_id, [=](const ast::StatementList& stmts) {
|
||||||
builder->body =
|
builder->body = create<ast::BlockStatement>(Source{}, stmts);
|
||||||
create<ast::BlockStatement>(Source{}, stmts);
|
});
|
||||||
});
|
|
||||||
return success();
|
return success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2478,11 +2473,10 @@ bool FunctionEmitter::EmitContinuingStart(const Construct* construct) {
|
||||||
return Fail() << "internal error: starting continue construct, "
|
return Fail() << "internal error: starting continue construct, "
|
||||||
"expected loop on top of stack";
|
"expected loop on top of stack";
|
||||||
}
|
}
|
||||||
PushNewStatementBlock(construct, construct->end_id, nullptr,
|
PushNewStatementBlock(
|
||||||
[=](const ast::StatementList& stmts) {
|
construct, construct->end_id, [=](const ast::StatementList& stmts) {
|
||||||
loop->continuing =
|
loop->continuing = create<ast::BlockStatement>(Source{}, stmts);
|
||||||
create<ast::BlockStatement>(Source{}, stmts);
|
});
|
||||||
});
|
|
||||||
|
|
||||||
return success();
|
return success();
|
||||||
}
|
}
|
||||||
|
@ -2570,7 +2564,7 @@ bool FunctionEmitter::EmitNormalTerminator(const BlockInfo& block_info) {
|
||||||
|
|
||||||
AddStatement(MakeSimpleIf(cond, true_branch, false_branch));
|
AddStatement(MakeSimpleIf(cond, true_branch, false_branch));
|
||||||
if (!flow_guard.empty()) {
|
if (!flow_guard.empty()) {
|
||||||
PushGuard(flow_guard, statements_stack_.back().EndId());
|
PushGuard(flow_guard, statements_stack_.back().GetEndId());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -861,8 +861,7 @@ class FunctionEmitter {
|
||||||
public:
|
public:
|
||||||
StatementBlock(const Construct* construct,
|
StatementBlock(const Construct* construct,
|
||||||
uint32_t end_id,
|
uint32_t end_id,
|
||||||
CompletionAction completion_action,
|
CompletionAction completion_action);
|
||||||
ast::CaseStatementList* cases);
|
|
||||||
StatementBlock(StatementBlock&&);
|
StatementBlock(StatementBlock&&);
|
||||||
~StatementBlock();
|
~StatementBlock();
|
||||||
|
|
||||||
|
@ -897,40 +896,28 @@ class FunctionEmitter {
|
||||||
void SetConstruct(const Construct* construct) { construct_ = construct; }
|
void SetConstruct(const Construct* construct) { construct_ = construct; }
|
||||||
|
|
||||||
/// @return the construct to which this construct constributes
|
/// @return the construct to which this construct constributes
|
||||||
const Construct* Construct() const { return construct_; }
|
const Construct* GetConstruct() const { return construct_; }
|
||||||
|
|
||||||
/// @return the ID of the block at which the completion action should be
|
/// @return the ID of the block at which the completion action should be
|
||||||
/// triggered and this statement block discarded. This is often the `end_id`
|
/// triggered and this statement block discarded. This is often the `end_id`
|
||||||
/// of `construct` itself.
|
/// of `construct` itself.
|
||||||
uint32_t EndId() const { return end_id_; }
|
uint32_t GetEndId() const { return end_id_; }
|
||||||
|
|
||||||
/// @return the completion action finishes processing this statement block
|
|
||||||
CompletionAction CompletionAction() const { return completion_action_; }
|
|
||||||
|
|
||||||
/// @return the list of statements being built, if this construct is not a
|
/// @return the list of statements being built, if this construct is not a
|
||||||
/// switch.
|
/// switch.
|
||||||
const ast::StatementList& Statements() const { return statements_; }
|
const ast::StatementList& GetStatements() const { return statements_; }
|
||||||
|
|
||||||
/// @return the list of switch cases being built, if this construct is a
|
|
||||||
/// switch
|
|
||||||
ast::CaseStatementList* Cases() const { return cases_; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/// The construct to which this construct constributes.
|
/// The construct to which this construct constributes.
|
||||||
const spirv::Construct* construct_;
|
const Construct* construct_;
|
||||||
/// The ID of the block at which the completion action should be triggered
|
/// The ID of the block at which the completion action should be triggered
|
||||||
/// and this statement block discarded. This is often the `end_id` of
|
/// and this statement block discarded. This is often the `end_id` of
|
||||||
/// `construct` itself.
|
/// `construct` itself.
|
||||||
uint32_t const end_id_;
|
uint32_t const end_id_;
|
||||||
/// The completion action finishes processing this statement block.
|
/// The completion action finishes processing this statement block.
|
||||||
FunctionEmitter::CompletionAction const completion_action_;
|
FunctionEmitter::CompletionAction const completion_action_;
|
||||||
|
|
||||||
// Only one of `statements` or `cases` is active.
|
|
||||||
|
|
||||||
/// The list of statements being built, if this construct is not a switch.
|
/// The list of statements being built, if this construct is not a switch.
|
||||||
ast::StatementList statements_;
|
ast::StatementList statements_;
|
||||||
/// The list of switch cases being built, if this construct is a switch.
|
|
||||||
ast::CaseStatementList* cases_ = nullptr;
|
|
||||||
|
|
||||||
/// Owned statement builders
|
/// Owned statement builders
|
||||||
std::vector<std::unique_ptr<StatementBuilder>> builders_;
|
std::vector<std::unique_ptr<StatementBuilder>> builders_;
|
||||||
|
@ -939,11 +926,9 @@ class FunctionEmitter {
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Pushes an empty statement block onto the statements stack.
|
/// Pushes an empty statement block onto the statements stack.
|
||||||
/// @param cases the case list to push into
|
|
||||||
/// @param action the completion action for this block
|
/// @param action the completion action for this block
|
||||||
void PushNewStatementBlock(const Construct* construct,
|
void PushNewStatementBlock(const Construct* construct,
|
||||||
uint32_t end_id,
|
uint32_t end_id,
|
||||||
ast::CaseStatementList* cases,
|
|
||||||
CompletionAction action);
|
CompletionAction action);
|
||||||
|
|
||||||
/// Emits an if-statement whose condition is the given flow guard
|
/// Emits an if-statement whose condition is the given flow guard
|
||||||
|
|
Loading…
Reference in New Issue