mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-12 14:46:08 +00:00
Validate function call arguments
- Add resolver/call_test.cc for new unit tests, and move a couple that were in resolver/validation_test.cc to it - Fix CalculateArrayLength transform so that it passes the address of the u32 it creates to the internal function - Fix tests broken as a result of this change Bug: tint:664 Change-Id: If713f9828790cd51224d2392d42c01c0057cb652 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/53920 Reviewed-by: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
This commit is contained in:
committed by
Tint LUCI CQ
parent
1987fd80f4
commit
14b3403148
@@ -182,14 +182,15 @@ Output CalculateArrayLength::Run(const Program* in, const DataMap&) {
|
||||
ctx.dst->Var(ctx.dst->Sym(), ctx.dst->ty.u32(),
|
||||
ast::StorageClass::kNone, ctx.dst->Expr(0u)));
|
||||
|
||||
// Call storage_buffer.GetDimensions(buffer_size_result)
|
||||
// Call storage_buffer.GetDimensions(&buffer_size_result)
|
||||
auto* call_get_dims =
|
||||
ctx.dst->create<ast::CallStatement>(ctx.dst->Call(
|
||||
// BufferSizeIntrinsic(X, ARGS...) is
|
||||
// translated to:
|
||||
// X.GetDimensions(ARGS..) by the writer
|
||||
buffer_size, ctx.Clone(storage_buffer_expr),
|
||||
buffer_size_result->variable()->symbol()));
|
||||
ctx.dst->AddressOf(ctx.dst->Expr(
|
||||
buffer_size_result->variable()->symbol()))));
|
||||
|
||||
// Calculate actual array length
|
||||
// total_storage_buffer_size - array_offset
|
||||
|
||||
@@ -53,7 +53,7 @@ fn tint_symbol(buffer : SB, result : ptr<function, u32>)
|
||||
[[stage(compute)]]
|
||||
fn main() {
|
||||
var tint_symbol_1 : u32 = 0u;
|
||||
tint_symbol(sb, tint_symbol_1);
|
||||
tint_symbol(sb, &(tint_symbol_1));
|
||||
let tint_symbol_2 : u32 = ((tint_symbol_1 - 4u) / 4u);
|
||||
var len : u32 = tint_symbol_2;
|
||||
}
|
||||
@@ -97,7 +97,7 @@ fn tint_symbol(buffer : SB, result : ptr<function, u32>)
|
||||
[[stage(compute)]]
|
||||
fn main() {
|
||||
var tint_symbol_1 : u32 = 0u;
|
||||
tint_symbol(sb, tint_symbol_1);
|
||||
tint_symbol(sb, &(tint_symbol_1));
|
||||
let tint_symbol_2 : u32 = ((tint_symbol_1 - 4u) / 4u);
|
||||
var a : u32 = tint_symbol_2;
|
||||
var b : u32 = tint_symbol_2;
|
||||
@@ -143,7 +143,7 @@ fn tint_symbol(buffer : SB, result : ptr<function, u32>)
|
||||
[[stage(compute)]]
|
||||
fn main() {
|
||||
var tint_symbol_1 : u32 = 0u;
|
||||
tint_symbol(sb, tint_symbol_1);
|
||||
tint_symbol(sb, &(tint_symbol_1));
|
||||
let tint_symbol_2 : u32 = ((tint_symbol_1 - 8u) / 64u);
|
||||
var len : u32 = tint_symbol_2;
|
||||
}
|
||||
@@ -192,13 +192,13 @@ fn tint_symbol(buffer : SB, result : ptr<function, u32>)
|
||||
fn main() {
|
||||
if (true) {
|
||||
var tint_symbol_1 : u32 = 0u;
|
||||
tint_symbol(sb, tint_symbol_1);
|
||||
tint_symbol(sb, &(tint_symbol_1));
|
||||
let tint_symbol_2 : u32 = ((tint_symbol_1 - 4u) / 4u);
|
||||
var len : u32 = tint_symbol_2;
|
||||
} else {
|
||||
if (true) {
|
||||
var tint_symbol_3 : u32 = 0u;
|
||||
tint_symbol(sb, tint_symbol_3);
|
||||
tint_symbol(sb, &(tint_symbol_3));
|
||||
let tint_symbol_4 : u32 = ((tint_symbol_3 - 4u) / 4u);
|
||||
var len : u32 = tint_symbol_4;
|
||||
}
|
||||
@@ -263,10 +263,10 @@ fn tint_symbol_3(buffer : SB2, result : ptr<function, u32>)
|
||||
[[stage(compute)]]
|
||||
fn main() {
|
||||
var tint_symbol_1 : u32 = 0u;
|
||||
tint_symbol(sb1, tint_symbol_1);
|
||||
tint_symbol(sb1, &(tint_symbol_1));
|
||||
let tint_symbol_2 : u32 = ((tint_symbol_1 - 4u) / 4u);
|
||||
var tint_symbol_4 : u32 = 0u;
|
||||
tint_symbol_3(sb2, tint_symbol_4);
|
||||
tint_symbol_3(sb2, &(tint_symbol_4));
|
||||
let tint_symbol_5 : u32 = ((tint_symbol_4 - 16u) / 16u);
|
||||
var len1 : u32 = tint_symbol_2;
|
||||
var len2 : u32 = tint_symbol_5;
|
||||
|
||||
Reference in New Issue
Block a user