mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-21 02:39:11 +00:00
tint/ast: Change StructMember::symbol to StructMember::name
StructMember::name is an ast::Identifier. The goal here is to have all AST nodes use an identifier instead of symbols directly. This will greatly simplify the renamer transform, and gives the symbol a Source location, which is helpful for diagnostics and tooling. Change-Id: I1156653a48b02997ec0a9077b174401f65a13457 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/119281 Kokoro: Ben Clayton <bclayton@google.com> Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
This commit is contained in:
@@ -170,7 +170,8 @@ Transform::ApplyResult ClampFragDepth::Apply(const Program* src, const DataMap&,
|
||||
|
||||
utils::Vector<const ast::Expression*, 8u> initializer_args;
|
||||
for (auto* member : struct_ty->members) {
|
||||
const ast::Expression* arg = b.MemberAccessor("s", ctx.Clone(member->symbol));
|
||||
const ast::Expression* arg =
|
||||
b.MemberAccessor("s", ctx.Clone(member->name->symbol));
|
||||
if (ContainsFragDepth(member->attributes)) {
|
||||
arg = b.Call(base_fn_sym, arg);
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ struct PreservePadding::State {
|
||||
return call_helper([&]() {
|
||||
utils::Vector<const ast::Statement*, 8> body;
|
||||
for (auto member : str->Members()) {
|
||||
auto name = sym.NameFor(member->Declaration()->symbol);
|
||||
auto name = sym.NameFor(member->Declaration()->name->symbol);
|
||||
body.Push(MakeAssignment(member->Type(),
|
||||
b.MemberAccessor(b.Deref(kDestParamName), name),
|
||||
b.MemberAccessor(kValueParamName, name)));
|
||||
|
||||
@@ -132,7 +132,7 @@ struct SpirvAtomic::State {
|
||||
auto* member = str->members[i];
|
||||
if (forked.atomic_members.count(i)) {
|
||||
auto* type = AtomicTypeFor(ctx.src->Sem().Get(member)->Type());
|
||||
auto name = ctx.src->Symbols().NameFor(member->symbol);
|
||||
auto name = ctx.src->Symbols().NameFor(member->name->symbol);
|
||||
members.Push(b.Member(name, type, ctx.Clone(member->attributes)));
|
||||
} else {
|
||||
members.Push(ctx.Clone(member));
|
||||
|
||||
@@ -384,7 +384,7 @@ struct Std140::State {
|
||||
bool unique = true;
|
||||
for (auto* member : str->members) {
|
||||
// The member name must be unique over the entire set of `count` suffixed names.
|
||||
if (strings.Contains(sym.NameFor(member->symbol))) {
|
||||
if (strings.Contains(sym.NameFor(member->name->symbol))) {
|
||||
unique = false;
|
||||
break;
|
||||
}
|
||||
@@ -420,7 +420,8 @@ struct Std140::State {
|
||||
b.Structure(name, members);
|
||||
return Std140Matrix{
|
||||
name,
|
||||
utils::Transform(members, [&](auto* member) { return member->symbol; }),
|
||||
utils::Transform(members,
|
||||
[&](auto* member) { return member->name->symbol; }),
|
||||
};
|
||||
});
|
||||
return b.ty(std140_mat.name);
|
||||
@@ -704,7 +705,7 @@ struct Std140::State {
|
||||
auto* mat_ty = CreateASTTypeFor(ctx, member->Type());
|
||||
auto mat_args =
|
||||
utils::Transform(*col_members, [&](const ast::StructMember* m) {
|
||||
return b.MemberAccessor(param, m->symbol);
|
||||
return b.MemberAccessor(param, m->name->symbol);
|
||||
});
|
||||
args.Push(b.Call(mat_ty, std::move(mat_args)));
|
||||
} else {
|
||||
@@ -838,7 +839,7 @@ struct Std140::State {
|
||||
auto mat_member_idx = std::get<u32>(chain.indices[std140_mat_idx]);
|
||||
auto* mat_member = str->Members()[mat_member_idx];
|
||||
auto mat_columns = *std140_mat_members.Get(mat_member);
|
||||
expr = b.MemberAccessor(expr, mat_columns[column_idx]->symbol);
|
||||
expr = b.MemberAccessor(expr, mat_columns[column_idx]->name->symbol);
|
||||
ty = mat_member->Type()->As<type::Matrix>()->ColumnType();
|
||||
} else {
|
||||
// Non-structure-member matrix. The columns are decomposed into a new, bespoke std140
|
||||
@@ -921,7 +922,7 @@ struct Std140::State {
|
||||
std::to_string(column_param_idx);
|
||||
}
|
||||
auto mat_columns = *std140_mat_members.Get(mat_member);
|
||||
expr = b.MemberAccessor(expr, mat_columns[column_idx]->symbol);
|
||||
expr = b.MemberAccessor(expr, mat_columns[column_idx]->name->symbol);
|
||||
ty = mat_member->Type()->As<type::Matrix>()->ColumnType();
|
||||
} else {
|
||||
// Non-structure-member matrix. The columns are decomposed into a new, bespoke
|
||||
@@ -1015,7 +1016,7 @@ struct Std140::State {
|
||||
auto* mat_member = str->Members()[mat_member_idx];
|
||||
auto mat_columns = *std140_mat_members.Get(mat_member);
|
||||
columns = utils::Transform(mat_columns, [&](auto* column_member) {
|
||||
return b.MemberAccessor(b.Deref(let), column_member->symbol);
|
||||
return b.MemberAccessor(b.Deref(let), column_member->name->symbol);
|
||||
});
|
||||
ty = mat_member->Type();
|
||||
name += "_" + sym.NameFor(mat_member->Name());
|
||||
|
||||
@@ -805,7 +805,7 @@ struct VertexPulling::State {
|
||||
bool has_locations = false;
|
||||
utils::Vector<const ast::StructMember*, 8> members_to_clone;
|
||||
for (auto* member : struct_ty->members) {
|
||||
auto member_sym = ctx.Clone(member->symbol);
|
||||
auto member_sym = ctx.Clone(member->name->symbol);
|
||||
std::function<const ast::Expression*()> member_expr = [this, param_sym, member_sym]() {
|
||||
return b.MemberAccessor(param_sym, member_sym);
|
||||
};
|
||||
@@ -851,10 +851,10 @@ struct VertexPulling::State {
|
||||
// Create a new struct without the location attributes.
|
||||
utils::Vector<const ast::StructMember*, 8> new_members;
|
||||
for (auto* member : members_to_clone) {
|
||||
auto member_sym = ctx.Clone(member->symbol);
|
||||
auto member_name = ctx.Clone(member->name);
|
||||
auto* member_type = ctx.Clone(member->type);
|
||||
auto member_attrs = ctx.Clone(member->attributes);
|
||||
new_members.Push(b.Member(member_sym, member_type, std::move(member_attrs)));
|
||||
new_members.Push(b.Member(member_name, member_type, std::move(member_attrs)));
|
||||
}
|
||||
auto* new_struct = b.Structure(b.Sym(), new_members);
|
||||
|
||||
@@ -864,7 +864,7 @@ struct VertexPulling::State {
|
||||
|
||||
// Copy values from the new parameter to the function-scope variable.
|
||||
for (auto* member : members_to_clone) {
|
||||
auto member_name = ctx.Clone(member->symbol);
|
||||
auto member_name = ctx.Clone(member->name->symbol);
|
||||
ctx.InsertFront(func->body->statements,
|
||||
b.Assign(b.MemberAccessor(func_var, member_name),
|
||||
b.MemberAccessor(new_param, member_name)));
|
||||
|
||||
@@ -172,7 +172,7 @@ struct ZeroInitWorkgroupMemory::State {
|
||||
if (builtin->builtin == ast::BuiltinValue::kLocalInvocationIndex) {
|
||||
local_index = [=] {
|
||||
auto* param_expr = b.Expr(ctx.Clone(param->symbol));
|
||||
auto member_name = ctx.Clone(member->Declaration()->symbol);
|
||||
auto* member_name = ctx.Clone(member->Declaration()->name);
|
||||
return b.MemberAccessor(param_expr, member_name);
|
||||
};
|
||||
break;
|
||||
@@ -317,7 +317,7 @@ struct ZeroInitWorkgroupMemory::State {
|
||||
|
||||
if (auto* str = ty->As<sem::Struct>()) {
|
||||
for (auto* member : str->Members()) {
|
||||
auto name = ctx.Clone(member->Declaration()->symbol);
|
||||
auto name = ctx.Clone(member->Declaration()->name->symbol);
|
||||
auto get_member = [&](uint32_t num_values) {
|
||||
auto s = get_expr(num_values);
|
||||
if (!s) {
|
||||
|
||||
Reference in New Issue
Block a user