Rename Usages.
The `Usages` method is renamed to `UsagesUnsorted` to make room for a
future `UsagesSorted` which returns the sorted version.
Bug: 354711610
Change-Id: Iddc42141de1e674839ed89b4328996862e72fa72
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/200919
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/lang/core/ir/access_test.cc b/src/tint/lang/core/ir/access_test.cc
index 08839a5..b542e15 100644
--- a/src/tint/lang/core/ir/access_test.cc
+++ b/src/tint/lang/core/ir/access_test.cc
@@ -46,8 +46,8 @@
auto* idx = b.Constant(u32(1));
auto* a = b.Access(ty.i32(), var, idx);
- EXPECT_THAT(var->Result(0)->Usages(), testing::UnorderedElementsAre(Usage{a, 0u}));
- EXPECT_THAT(idx->Usages(), testing::UnorderedElementsAre(Usage{a, 1u}));
+ EXPECT_THAT(var->Result(0)->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{a, 0u}));
+ EXPECT_THAT(idx->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{a, 1u}));
}
TEST_F(IR_AccessTest, Result) {
diff --git a/src/tint/lang/core/ir/bitcast_test.cc b/src/tint/lang/core/ir/bitcast_test.cc
index b2baf1e..d13eaa6 100644
--- a/src/tint/lang/core/ir/bitcast_test.cc
+++ b/src/tint/lang/core/ir/bitcast_test.cc
@@ -69,7 +69,7 @@
auto args = inst->Args();
ASSERT_EQ(args.Length(), 1u);
ASSERT_NE(args[0], nullptr);
- EXPECT_THAT(args[0]->Usages(), testing::UnorderedElementsAre(Usage{inst, 0u}));
+ EXPECT_THAT(args[0]->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 0u}));
}
TEST_F(IR_BitcastDeathTest, Fail_NullType) {
diff --git a/src/tint/lang/core/ir/break_if_test.cc b/src/tint/lang/core/ir/break_if_test.cc
index c6e4606..b1c1cc7 100644
--- a/src/tint/lang/core/ir/break_if_test.cc
+++ b/src/tint/lang/core/ir/break_if_test.cc
@@ -45,9 +45,9 @@
auto* brk = b.BreakIf(loop, cond, arg1, arg2);
- EXPECT_THAT(cond->Usages(), testing::UnorderedElementsAre(Usage{brk, 0u}));
- EXPECT_THAT(arg1->Usages(), testing::UnorderedElementsAre(Usage{brk, 1u}));
- EXPECT_THAT(arg2->Usages(), testing::UnorderedElementsAre(Usage{brk, 2u}));
+ EXPECT_THAT(cond->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{brk, 0u}));
+ EXPECT_THAT(arg1->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{brk, 1u}));
+ EXPECT_THAT(arg2->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{brk, 2u}));
}
TEST_F(IR_BreakIfTest, Results) {
diff --git a/src/tint/lang/core/ir/construct_test.cc b/src/tint/lang/core/ir/construct_test.cc
index ca14bc4..daa9eda 100644
--- a/src/tint/lang/core/ir/construct_test.cc
+++ b/src/tint/lang/core/ir/construct_test.cc
@@ -42,8 +42,8 @@
auto* arg2 = b.Constant(false);
auto* c = b.Construct(mod.Types().f32(), arg1, arg2);
- EXPECT_THAT(arg1->Usages(), testing::UnorderedElementsAre(Usage{c, 0u}));
- EXPECT_THAT(arg2->Usages(), testing::UnorderedElementsAre(Usage{c, 1u}));
+ EXPECT_THAT(arg1->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{c, 0u}));
+ EXPECT_THAT(arg2->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{c, 1u}));
}
TEST_F(IR_ConstructTest, Result) {
diff --git a/src/tint/lang/core/ir/continue_test.cc b/src/tint/lang/core/ir/continue_test.cc
index ab5e72d..85a5e7e 100644
--- a/src/tint/lang/core/ir/continue_test.cc
+++ b/src/tint/lang/core/ir/continue_test.cc
@@ -44,8 +44,8 @@
auto* brk = b.Continue(loop, arg1, arg2);
- EXPECT_THAT(arg1->Usages(), testing::UnorderedElementsAre(Usage{brk, 0u}));
- EXPECT_THAT(arg2->Usages(), testing::UnorderedElementsAre(Usage{brk, 1u}));
+ EXPECT_THAT(arg1->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{brk, 0u}));
+ EXPECT_THAT(arg2->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{brk, 1u}));
}
TEST_F(IR_ContinueTest, Results) {
diff --git a/src/tint/lang/core/ir/core_binary_test.cc b/src/tint/lang/core/ir/core_binary_test.cc
index 4a75aa4..f552b05 100644
--- a/src/tint/lang/core/ir/core_binary_test.cc
+++ b/src/tint/lang/core/ir/core_binary_test.cc
@@ -337,10 +337,10 @@
EXPECT_EQ(inst->Op(), BinaryOp::kAnd);
ASSERT_NE(inst->LHS(), nullptr);
- EXPECT_THAT(inst->LHS()->Usages(), testing::UnorderedElementsAre(Usage{inst, 0u}));
+ EXPECT_THAT(inst->LHS()->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 0u}));
ASSERT_NE(inst->RHS(), nullptr);
- EXPECT_THAT(inst->RHS()->Usages(), testing::UnorderedElementsAre(Usage{inst, 1u}));
+ EXPECT_THAT(inst->RHS()->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 1u}));
}
TEST_F(IR_BinaryTest, Binary_Usage_DuplicateValue) {
@@ -351,7 +351,7 @@
ASSERT_EQ(inst->LHS(), inst->RHS());
ASSERT_NE(inst->LHS(), nullptr);
- EXPECT_THAT(inst->LHS()->Usages(),
+ EXPECT_THAT(inst->LHS()->UsagesUnsorted(),
testing::UnorderedElementsAre(Usage{inst, 0u}, Usage{inst, 1u}));
}
@@ -362,11 +362,11 @@
EXPECT_EQ(inst->Op(), BinaryOp::kAnd);
- EXPECT_THAT(rhs_a->Usages(), testing::UnorderedElementsAre(Usage{inst, 1u}));
- EXPECT_THAT(rhs_b->Usages(), testing::UnorderedElementsAre());
+ EXPECT_THAT(rhs_a->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 1u}));
+ EXPECT_THAT(rhs_b->UsagesUnsorted(), testing::UnorderedElementsAre());
inst->SetOperand(1, rhs_b);
- EXPECT_THAT(rhs_a->Usages(), testing::UnorderedElementsAre());
- EXPECT_THAT(rhs_b->Usages(), testing::UnorderedElementsAre(Usage{inst, 1u}));
+ EXPECT_THAT(rhs_a->UsagesUnsorted(), testing::UnorderedElementsAre());
+ EXPECT_THAT(rhs_b->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 1u}));
}
TEST_F(IR_BinaryTest, Clone) {
diff --git a/src/tint/lang/core/ir/core_builtin_call_test.cc b/src/tint/lang/core/ir/core_builtin_call_test.cc
index b396749..48e0fe8 100644
--- a/src/tint/lang/core/ir/core_builtin_call_test.cc
+++ b/src/tint/lang/core/ir/core_builtin_call_test.cc
@@ -41,8 +41,8 @@
auto* arg2 = b.Constant(2_u);
auto* builtin = b.Call(mod.Types().f32(), core::BuiltinFn::kAbs, arg1, arg2);
- EXPECT_THAT(arg1->Usages(), testing::UnorderedElementsAre(Usage{builtin, 0u}));
- EXPECT_THAT(arg2->Usages(), testing::UnorderedElementsAre(Usage{builtin, 1u}));
+ EXPECT_THAT(arg1->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{builtin, 0u}));
+ EXPECT_THAT(arg2->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{builtin, 1u}));
}
TEST_F(IR_CoreBuiltinCallTest, Result) {
diff --git a/src/tint/lang/core/ir/core_unary_test.cc b/src/tint/lang/core/ir/core_unary_test.cc
index 4eb6fe8..92aeb55 100644
--- a/src/tint/lang/core/ir/core_unary_test.cc
+++ b/src/tint/lang/core/ir/core_unary_test.cc
@@ -82,7 +82,7 @@
EXPECT_EQ(inst->Op(), UnaryOp::kNegation);
ASSERT_NE(inst->Val(), nullptr);
- EXPECT_THAT(inst->Val()->Usages(), testing::UnorderedElementsAre(Usage{inst, 0u}));
+ EXPECT_THAT(inst->Val()->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 0u}));
}
TEST_F(IR_UnaryTest, Result) {
diff --git a/src/tint/lang/core/ir/exit_if_test.cc b/src/tint/lang/core/ir/exit_if_test.cc
index 7eb07ce..eb22d49 100644
--- a/src/tint/lang/core/ir/exit_if_test.cc
+++ b/src/tint/lang/core/ir/exit_if_test.cc
@@ -42,8 +42,8 @@
auto* if_ = b.If(true);
auto* e = b.ExitIf(if_, arg1, arg2);
- EXPECT_THAT(arg1->Usages(), testing::UnorderedElementsAre(Usage{e, 0u}));
- EXPECT_THAT(arg2->Usages(), testing::UnorderedElementsAre(Usage{e, 1u}));
+ EXPECT_THAT(arg1->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{e, 0u}));
+ EXPECT_THAT(arg2->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{e, 1u}));
EXPECT_EQ(if_->Result(0), nullptr);
}
diff --git a/src/tint/lang/core/ir/exit_loop_test.cc b/src/tint/lang/core/ir/exit_loop_test.cc
index 18c59a3..fbde1da 100644
--- a/src/tint/lang/core/ir/exit_loop_test.cc
+++ b/src/tint/lang/core/ir/exit_loop_test.cc
@@ -42,8 +42,8 @@
auto* loop = b.Loop();
auto* e = b.ExitLoop(loop, arg1, arg2);
- EXPECT_THAT(arg1->Usages(), testing::UnorderedElementsAre(Usage{e, 0u}));
- EXPECT_THAT(arg2->Usages(), testing::UnorderedElementsAre(Usage{e, 1u}));
+ EXPECT_THAT(arg1->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{e, 0u}));
+ EXPECT_THAT(arg2->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{e, 1u}));
EXPECT_EQ(loop->Result(0), nullptr);
}
diff --git a/src/tint/lang/core/ir/exit_switch_test.cc b/src/tint/lang/core/ir/exit_switch_test.cc
index 2fc1f77..2adb079 100644
--- a/src/tint/lang/core/ir/exit_switch_test.cc
+++ b/src/tint/lang/core/ir/exit_switch_test.cc
@@ -42,8 +42,8 @@
auto* switch_ = b.Switch(true);
auto* e = b.ExitSwitch(switch_, arg1, arg2);
- EXPECT_THAT(arg1->Usages(), testing::UnorderedElementsAre(Usage{e, 0u}));
- EXPECT_THAT(arg2->Usages(), testing::UnorderedElementsAre(Usage{e, 1u}));
+ EXPECT_THAT(arg1->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{e, 0u}));
+ EXPECT_THAT(arg2->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{e, 1u}));
EXPECT_EQ(switch_->Result(0), nullptr);
}
diff --git a/src/tint/lang/core/ir/if_test.cc b/src/tint/lang/core/ir/if_test.cc
index 425ea23..9697fb0 100644
--- a/src/tint/lang/core/ir/if_test.cc
+++ b/src/tint/lang/core/ir/if_test.cc
@@ -39,7 +39,7 @@
TEST_F(IR_IfTest, Usage) {
auto* cond = b.Constant(true);
auto* if_ = b.If(cond);
- EXPECT_THAT(cond->Usages(), testing::UnorderedElementsAre(Usage{if_, 0u}));
+ EXPECT_THAT(cond->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{if_, 0u}));
}
TEST_F(IR_IfTest, Result) {
diff --git a/src/tint/lang/core/ir/load_test.cc b/src/tint/lang/core/ir/load_test.cc
index 5cf8a63..f5e3792 100644
--- a/src/tint/lang/core/ir/load_test.cc
+++ b/src/tint/lang/core/ir/load_test.cc
@@ -57,7 +57,7 @@
auto* inst = b.Load(var);
ASSERT_NE(inst->From(), nullptr);
- EXPECT_THAT(inst->From()->Usages(), testing::UnorderedElementsAre(Usage{inst, 0u}));
+ EXPECT_THAT(inst->From()->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 0u}));
}
TEST_F(IR_LoadTest, Results) {
diff --git a/src/tint/lang/core/ir/load_vector_element_test.cc b/src/tint/lang/core/ir/load_vector_element_test.cc
index bcfe77f..f3224baa 100644
--- a/src/tint/lang/core/ir/load_vector_element_test.cc
+++ b/src/tint/lang/core/ir/load_vector_element_test.cc
@@ -56,10 +56,10 @@
auto* inst = b.LoadVectorElement(from, 2_i);
ASSERT_NE(inst->From(), nullptr);
- EXPECT_THAT(inst->From()->Usages(), testing::UnorderedElementsAre(Usage{inst, 0u}));
+ EXPECT_THAT(inst->From()->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 0u}));
ASSERT_NE(inst->Index(), nullptr);
- EXPECT_THAT(inst->Index()->Usages(), testing::UnorderedElementsAre(Usage{inst, 1u}));
+ EXPECT_THAT(inst->Index()->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 1u}));
}
TEST_F(IR_LoadVectorElementTest, Result) {
diff --git a/src/tint/lang/core/ir/operand_instruction_test.cc b/src/tint/lang/core/ir/operand_instruction_test.cc
index b82c9d5..92bfb2e 100644
--- a/src/tint/lang/core/ir/operand_instruction_test.cc
+++ b/src/tint/lang/core/ir/operand_instruction_test.cc
@@ -43,15 +43,15 @@
auto* lhs = inst->LHS();
auto* rhs = inst->RHS();
EXPECT_EQ(inst->Block(), block);
- EXPECT_THAT(lhs->Usages(), testing::ElementsAre(Usage{inst, 0u}));
- EXPECT_THAT(rhs->Usages(), testing::ElementsAre(Usage{inst, 1u}));
+ EXPECT_THAT(lhs->UsagesUnsorted(), testing::ElementsAre(Usage{inst, 0u}));
+ EXPECT_THAT(rhs->UsagesUnsorted(), testing::ElementsAre(Usage{inst, 1u}));
EXPECT_TRUE(inst->Result(0)->Alive());
inst->Destroy();
EXPECT_EQ(inst->Block(), nullptr);
- EXPECT_TRUE(lhs->Usages().IsEmpty());
- EXPECT_TRUE(rhs->Usages().IsEmpty());
+ EXPECT_FALSE(lhs->IsUsed());
+ EXPECT_FALSE(rhs->IsUsed());
EXPECT_FALSE(inst->Result(0)->Alive());
}
diff --git a/src/tint/lang/core/ir/return_test.cc b/src/tint/lang/core/ir/return_test.cc
index 61a968d..212c07b 100644
--- a/src/tint/lang/core/ir/return_test.cc
+++ b/src/tint/lang/core/ir/return_test.cc
@@ -42,7 +42,7 @@
ASSERT_EQ(ret->Func(), func);
EXPECT_TRUE(ret->Args().IsEmpty());
EXPECT_EQ(ret->Value(), nullptr);
- EXPECT_THAT(func->Usages(), testing::UnorderedElementsAre(Usage{ret, 0u}));
+ EXPECT_THAT(func->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{ret, 0u}));
}
TEST_F(IR_ReturnTest, WithValue) {
@@ -53,8 +53,8 @@
ASSERT_EQ(ret->Args().Length(), 1u);
EXPECT_EQ(ret->Args()[0], val);
EXPECT_EQ(ret->Value(), val);
- EXPECT_THAT(func->Usages(), testing::UnorderedElementsAre(Usage{ret, 0u}));
- EXPECT_THAT(val->Usages(), testing::UnorderedElementsAre(Usage{ret, 1u}));
+ EXPECT_THAT(func->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{ret, 0u}));
+ EXPECT_THAT(val->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{ret, 1u}));
}
TEST_F(IR_ReturnTest, Result) {
diff --git a/src/tint/lang/core/ir/store_test.cc b/src/tint/lang/core/ir/store_test.cc
index d3fbf9d..7b49623 100644
--- a/src/tint/lang/core/ir/store_test.cc
+++ b/src/tint/lang/core/ir/store_test.cc
@@ -56,10 +56,10 @@
auto* inst = b.Store(to, 4_i);
ASSERT_NE(inst->To(), nullptr);
- EXPECT_THAT(inst->To()->Usages(), testing::UnorderedElementsAre(Usage{inst, 0u}));
+ EXPECT_THAT(inst->To()->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 0u}));
ASSERT_NE(inst->From(), nullptr);
- EXPECT_THAT(inst->From()->Usages(), testing::UnorderedElementsAre(Usage{inst, 1u}));
+ EXPECT_THAT(inst->From()->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 1u}));
}
TEST_F(IR_StoreTest, Result) {
diff --git a/src/tint/lang/core/ir/store_vector_element_test.cc b/src/tint/lang/core/ir/store_vector_element_test.cc
index 788e3d7..e5eb537 100644
--- a/src/tint/lang/core/ir/store_vector_element_test.cc
+++ b/src/tint/lang/core/ir/store_vector_element_test.cc
@@ -61,13 +61,13 @@
auto* inst = b.StoreVectorElement(to, 2_i, 4_i);
ASSERT_NE(inst->To(), nullptr);
- EXPECT_THAT(inst->To()->Usages(), testing::UnorderedElementsAre(Usage{inst, 0u}));
+ EXPECT_THAT(inst->To()->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 0u}));
ASSERT_NE(inst->Index(), nullptr);
- EXPECT_THAT(inst->Index()->Usages(), testing::UnorderedElementsAre(Usage{inst, 1u}));
+ EXPECT_THAT(inst->Index()->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 1u}));
ASSERT_NE(inst->Value(), nullptr);
- EXPECT_THAT(inst->Value()->Usages(), testing::UnorderedElementsAre(Usage{inst, 2u}));
+ EXPECT_THAT(inst->Value()->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{inst, 2u}));
}
TEST_F(IR_StoreVectorElementTest, Result) {
diff --git a/src/tint/lang/core/ir/switch_test.cc b/src/tint/lang/core/ir/switch_test.cc
index ee740d1..45c95af 100644
--- a/src/tint/lang/core/ir/switch_test.cc
+++ b/src/tint/lang/core/ir/switch_test.cc
@@ -40,7 +40,7 @@
TEST_F(IR_SwitchTest, Usage) {
auto* cond = b.Constant(true);
auto* switch_ = b.Switch(cond);
- EXPECT_THAT(cond->Usages(), testing::UnorderedElementsAre(Usage{switch_, 0u}));
+ EXPECT_THAT(cond->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{switch_, 0u}));
}
TEST_F(IR_SwitchTest, Results) {
diff --git a/src/tint/lang/core/ir/swizzle_test.cc b/src/tint/lang/core/ir/swizzle_test.cc
index 445adf0..8728f6f 100644
--- a/src/tint/lang/core/ir/swizzle_test.cc
+++ b/src/tint/lang/core/ir/swizzle_test.cc
@@ -42,7 +42,7 @@
auto* var = b.Var(ty.ptr<function, i32>());
auto* a = b.Swizzle(mod.Types().i32(), var, {1u});
- EXPECT_THAT(var->Result(0)->Usages(), testing::UnorderedElementsAre(Usage{a, 0u}));
+ EXPECT_THAT(var->Result(0)->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{a, 0u}));
}
TEST_F(IR_SwizzleTest, Results) {
diff --git a/src/tint/lang/core/ir/transform/combine_access_instructions.cc b/src/tint/lang/core/ir/transform/combine_access_instructions.cc
index 1e9f6d0..bf906ed 100644
--- a/src/tint/lang/core/ir/transform/combine_access_instructions.cc
+++ b/src/tint/lang/core/ir/transform/combine_access_instructions.cc
@@ -69,7 +69,7 @@
});
// If there are no other uses of the access instruction, remove it.
- if (access->Result(0)->Usages().IsEmpty()) {
+ if (!access->Result(0)->IsUsed()) {
access->Destroy();
}
}
diff --git a/src/tint/lang/core/ir/transform/direct_variable_access.cc b/src/tint/lang/core/ir/transform/direct_variable_access.cc
index ca89b39..dfc01e4 100644
--- a/src/tint/lang/core/ir/transform/direct_variable_access.cc
+++ b/src/tint/lang/core/ir/transform/direct_variable_access.cc
@@ -608,7 +608,7 @@
/// @param value the pointer value that was used as a now replaced pointer argument.
void DeleteDeadInstructions(ir::Value* value) {
// While value has no uses...
- while (value && value->Usages().Count() == 0) {
+ while (value && !value->IsUsed()) {
auto* inst_res = value->As<InstructionResult>();
if (!inst_res) {
return; // Only instructions can be removed.
diff --git a/src/tint/lang/core/ir/transform/value_to_let.cc b/src/tint/lang/core/ir/transform/value_to_let.cc
index 9232458..120e0d9 100644
--- a/src/tint/lang/core/ir/transform/value_to_let.cc
+++ b/src/tint/lang/core/ir/transform/value_to_let.cc
@@ -92,8 +92,8 @@
auto maybe_put_in_let = [&](auto* inst) {
if (auto* result = inst->Result(0)) {
- auto& usages = result->Usages();
- switch (usages.Count()) {
+ auto& usages = result->UsagesUnsorted();
+ switch (result->NumUsages()) {
case 0: // No usage
break;
case 1: { // Single usage
diff --git a/src/tint/lang/core/ir/user_call_test.cc b/src/tint/lang/core/ir/user_call_test.cc
index b09634c..3ee269a 100644
--- a/src/tint/lang/core/ir/user_call_test.cc
+++ b/src/tint/lang/core/ir/user_call_test.cc
@@ -42,9 +42,9 @@
auto* arg1 = b.Constant(1_u);
auto* arg2 = b.Constant(2_u);
auto* e = b.Call(mod.Types().void_(), func, Vector{arg1, arg2});
- EXPECT_THAT(func->Usages(), testing::UnorderedElementsAre(Usage{e, 0u}));
- EXPECT_THAT(arg1->Usages(), testing::UnorderedElementsAre(Usage{e, 1u}));
- EXPECT_THAT(arg2->Usages(), testing::UnorderedElementsAre(Usage{e, 2u}));
+ EXPECT_THAT(func->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{e, 0u}));
+ EXPECT_THAT(arg1->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{e, 1u}));
+ EXPECT_THAT(arg2->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{e, 2u}));
}
TEST_F(IR_UserCallTest, Results) {
diff --git a/src/tint/lang/core/ir/value.h b/src/tint/lang/core/ir/value.h
index e6f1bad..f005d3f 100644
--- a/src/tint/lang/core/ir/value.h
+++ b/src/tint/lang/core/ir/value.h
@@ -88,7 +88,7 @@
/// @returns the set of usages of this value. An instruction may appear multiple times if it
/// uses the value for multiple different operands.
- const Hashset<Usage, 4>& Usages() { return uses_; }
+ const Hashset<Usage, 4>& UsagesUnsorted() { return uses_; }
/// @returns true if this Value has any usages
bool IsUsed() const { return !uses_.IsEmpty(); }
diff --git a/src/tint/lang/core/ir/var.cc b/src/tint/lang/core/ir/var.cc
index 60e8c33..e39cbd9 100644
--- a/src/tint/lang/core/ir/var.cc
+++ b/src/tint/lang/core/ir/var.cc
@@ -75,9 +75,10 @@
void Var::DestroyIfOnlyAssigned() {
auto* result = Result(0);
- if (result->Usages().All([](const Usage& u) { return u.instruction->Is<ir::Store>(); })) {
- while (!result->Usages().IsEmpty()) {
- auto& usage = *result->Usages().begin();
+ if (result->UsagesUnsorted().All(
+ [](const Usage& u) { return u.instruction->Is<ir::Store>(); })) {
+ while (result->IsUsed()) {
+ auto& usage = *result->UsagesUnsorted().begin();
usage->instruction->Destroy();
}
Destroy();
diff --git a/src/tint/lang/core/ir/var_test.cc b/src/tint/lang/core/ir/var_test.cc
index d1d8f53..313a699 100644
--- a/src/tint/lang/core/ir/var_test.cc
+++ b/src/tint/lang/core/ir/var_test.cc
@@ -65,9 +65,9 @@
auto* init = b.Constant(1_f);
var->SetInitializer(init);
- EXPECT_THAT(init->Usages(), testing::UnorderedElementsAre(Usage{var, 0u}));
+ EXPECT_THAT(init->UsagesUnsorted(), testing::UnorderedElementsAre(Usage{var, 0u}));
var->SetInitializer(nullptr);
- EXPECT_TRUE(init->Usages().IsEmpty());
+ EXPECT_FALSE(init->IsUsed());
}
TEST_F(IR_VarTest, Clone) {
diff --git a/src/tint/lang/hlsl/ir/ternary_test.cc b/src/tint/lang/hlsl/ir/ternary_test.cc
index 13bb252..ac7a4f6 100644
--- a/src/tint/lang/hlsl/ir/ternary_test.cc
+++ b/src/tint/lang/hlsl/ir/ternary_test.cc
@@ -47,9 +47,9 @@
Vector<core::ir::Value*, 3> args = {false_, true_, cmp};
auto* t = b.ir.allocators.instructions.Create<Ternary>(b.InstructionResult(ty.u32()), args);
- EXPECT_THAT(false_->Usages(), testing::UnorderedElementsAre(core::ir::Usage{t, 0u}));
- EXPECT_THAT(true_->Usages(), testing::UnorderedElementsAre(core::ir::Usage{t, 1u}));
- EXPECT_THAT(cmp->Usages(), testing::UnorderedElementsAre(core::ir::Usage{t, 2u}));
+ EXPECT_THAT(false_->UsagesUnsorted(), testing::UnorderedElementsAre(core::ir::Usage{t, 0u}));
+ EXPECT_THAT(true_->UsagesUnsorted(), testing::UnorderedElementsAre(core::ir::Usage{t, 1u}));
+ EXPECT_THAT(cmp->UsagesUnsorted(), testing::UnorderedElementsAre(core::ir::Usage{t, 2u}));
}
TEST_F(HlslIRTest, Result) {
diff --git a/src/tint/lang/hlsl/writer/raise/decompose_storage_access.cc b/src/tint/lang/hlsl/writer/raise/decompose_storage_access.cc
index 72198db..77c41d6 100644
--- a/src/tint/lang/hlsl/writer/raise/decompose_storage_access.cc
+++ b/src/tint/lang/hlsl/writer/raise/decompose_storage_access.cc
@@ -87,7 +87,7 @@
// Find all the usages of the `var` which is loading or storing.
Vector<core::ir::Instruction*, 4> usage_worklist;
- for (auto& usage : result->Usages()) {
+ for (auto& usage : result->UsagesUnsorted()) {
Switch(
usage->instruction,
[&](core::ir::LoadVectorElement* lve) { usage_worklist.Push(lve); },
@@ -148,7 +148,7 @@
// The `let` is, essentially, an alias for the `var` as it's assigned
// directly. Gather all the `let` usages into our worklist, and then replace
// the `let` with the `var` itself.
- for (auto& usage : let->Result(0)->Usages()) {
+ for (auto& usage : let->Result(0)->UsagesUnsorted()) {
usage_worklist.Push(usage->instruction);
}
let->Result(0)->ReplaceAllUsesWith(result);
@@ -741,7 +741,7 @@
}
// Copy the usages into a vector so we can remove items from the hashset.
- auto usages = a->Result(0)->Usages().Vector();
+ auto usages = a->Result(0)->UsagesUnsorted().Vector();
while (!usages.IsEmpty()) {
auto usage = usages.Pop();
tint::Switch(
@@ -750,7 +750,7 @@
// The `let` is essentially an alias to the `access`. So, add the `let`
// usages into the usage worklist, and replace the let with the access chain
// directly.
- for (auto& u : let->Result(0)->Usages()) {
+ for (auto& u : let->Result(0)->UsagesUnsorted()) {
usages.Push(u);
}
let->Result(0)->ReplaceAllUsesWith(a->Result(0));
diff --git a/src/tint/lang/hlsl/writer/raise/decompose_uniform_access.cc b/src/tint/lang/hlsl/writer/raise/decompose_uniform_access.cc
index 741d476..8c1493f 100644
--- a/src/tint/lang/hlsl/writer/raise/decompose_uniform_access.cc
+++ b/src/tint/lang/hlsl/writer/raise/decompose_uniform_access.cc
@@ -87,7 +87,7 @@
for (auto* var : var_worklist) {
auto* result = var->Result(0);
- auto usage_worklist = result->Usages().Vector();
+ auto usage_worklist = result->UsagesUnsorted().Vector();
auto* var_ty = result->Type()->As<core::type::Pointer>();
while (!usage_worklist.IsEmpty()) {
auto usage = usage_worklist.Pop();
@@ -108,7 +108,7 @@
// The `let` is, essentially, an alias for the `var` as it's assigned
// directly. Gather all the `let` usages into our worklist, and then replace
// the `let` with the `var` itself.
- for (auto& use : let->Result(0)->Usages()) {
+ for (auto& use : let->Result(0)->UsagesUnsorted()) {
usage_worklist.Push(use);
}
let->Result(0)->ReplaceAllUsesWith(result);
@@ -225,7 +225,7 @@
TINT_ICE_ON_NO_MATCH);
}
- auto usages = a->Result(0)->Usages().Vector();
+ auto usages = a->Result(0)->UsagesUnsorted().Vector();
while (!usages.IsEmpty()) {
auto usage = usages.Pop();
tint::Switch(
@@ -234,7 +234,7 @@
// The `let` is essentially an alias to the `access`. So, add the `let`
// usages into the usage worklist, and replace the let with the access chain
// directly.
- for (auto& u : let->Result(0)->Usages()) {
+ for (auto& u : let->Result(0)->UsagesUnsorted()) {
usages.Push(u);
}
let->Result(0)->ReplaceAllUsesWith(a->Result(0));
diff --git a/src/tint/lang/spirv/writer/printer/printer.cc b/src/tint/lang/spirv/writer/printer/printer.cc
index 647ee0a..ae54505 100644
--- a/src/tint/lang/spirv/writer/printer/printer.cc
+++ b/src/tint/lang/spirv/writer/printer/printer.cc
@@ -810,7 +810,7 @@
// Determine if this IO variable is used by the entry point.
bool used = false;
- for (const auto& use : var->Result(0)->Usages()) {
+ for (const auto& use : var->Result(0)->UsagesUnsorted()) {
auto* block = use->instruction->Block();
while (block->Parent()) {
block = block->Parent()->Block();
diff --git a/src/tint/lang/spirv/writer/raise/merge_return.cc b/src/tint/lang/spirv/writer/raise/merge_return.cc
index 077660e0..981b07d 100644
--- a/src/tint/lang/spirv/writer/raise/merge_return.cc
+++ b/src/tint/lang/spirv/writer/raise/merge_return.cc
@@ -72,7 +72,7 @@
/// @param fn the function to process
void Process(core::ir::Function* fn) {
// Find all of the nested return instructions in the function.
- for (const auto& usage : fn->Usages()) {
+ for (const auto& usage : fn->UsagesUnsorted()) {
if (auto* ret = usage->instruction->As<core::ir::Return>()) {
TransitivelyMarkAsReturning(ret->Block()->Parent());
}
diff --git a/src/tint/lang/wgsl/writer/raise/value_to_let.cc b/src/tint/lang/wgsl/writer/raise/value_to_let.cc
index ea14ec2..32e98b3 100644
--- a/src/tint/lang/wgsl/writer/raise/value_to_let.cc
+++ b/src/tint/lang/wgsl/writer/raise/value_to_let.cc
@@ -164,7 +164,7 @@
if (inst->IsAnyOf<core::ir::Var, core::ir::Let>()) {
return;
}
- if (inst->Is<core::ir::Call>() && value->Usages().IsEmpty()) {
+ if (inst->Is<core::ir::Call>() && !value->IsUsed()) {
bool must_use =
inst->Is<core::ir::BuiltinCall>() && !value->Type()->Is<core::type::Void>();
if (!must_use) {