mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-16 00:17:03 +00:00
tint/transform: fix PromoteInitializersToLet for constant expressions
Fix more edge cases uncovered with tint:1781 Fixed: tint:1781 Change-Id: I58d120185f47c10bc9fe55dd95a198d496c4ec94 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/113024 Reviewed-by: Antonio Maiorano <amaiorano@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Ben Clayton <bclayton@google.com> Auto-Submit: Ben Clayton <bclayton@google.com>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
dd0d45102a
commit
f528d33d52
@@ -5,33 +5,19 @@ void main() {
|
||||
const int nonempty[4] = {1, 2, 3, 4};
|
||||
const int nonempty_with_expr[4] = {1, x, (x + 1), nonempty[3]};
|
||||
const int nested_empty[2][3][4] = (int[2][3][4])0;
|
||||
const int tint_symbol[4] = {1, 2, 3, 4};
|
||||
const int tint_symbol_1[4] = {5, 6, 7, 8};
|
||||
const int tint_symbol_2[4] = {9, 10, 11, 12};
|
||||
const int tint_symbol_3[3][4] = {tint_symbol, tint_symbol_1, tint_symbol_2};
|
||||
const int tint_symbol_4[4] = {13, 14, 15, 16};
|
||||
const int tint_symbol_5[4] = {17, 18, 19, 20};
|
||||
const int tint_symbol_6[4] = {21, 22, 23, 24};
|
||||
const int tint_symbol_7[3][4] = {tint_symbol_4, tint_symbol_5, tint_symbol_6};
|
||||
const int nested_nonempty[2][3][4] = {tint_symbol_3, tint_symbol_7};
|
||||
const int tint_symbol_8[4] = {1, 2, x, (x + 1)};
|
||||
const int tint_symbol_9[4] = {5, 6, nonempty[2], (nonempty[3] + 1)};
|
||||
const int tint_symbol_10[3][4] = {tint_symbol_8, tint_symbol_9, nonempty};
|
||||
const int nested_nonempty_with_expr[2][3][4] = {tint_symbol_10, nested_nonempty[1]};
|
||||
const int tint_symbol_11[4] = (int[4])0;
|
||||
const int subexpr_empty = tint_symbol_11[1];
|
||||
const int tint_symbol_12[4] = {1, 2, 3, 4};
|
||||
const int subexpr_nonempty = tint_symbol_12[2];
|
||||
const int tint_symbol_13[4] = {1, x, (x + 1), nonempty[3]};
|
||||
const int subexpr_nonempty_with_expr = tint_symbol_13[2];
|
||||
const int tint_symbol_14[2][4] = (int[2][4])0;
|
||||
const int subexpr_nested_empty[4] = tint_symbol_14[1];
|
||||
const int tint_symbol_15[4] = {1, 2, 3, 4};
|
||||
const int tint_symbol_16[4] = {5, 6, 7, 8};
|
||||
const int tint_symbol_17[2][4] = {tint_symbol_15, tint_symbol_16};
|
||||
const int subexpr_nested_nonempty[4] = tint_symbol_17[1];
|
||||
const int tint_symbol_18[4] = {1, x, (x + 1), nonempty[3]};
|
||||
const int tint_symbol_19[2][4] = {tint_symbol_18, nested_nonempty[1][2]};
|
||||
const int subexpr_nested_nonempty_with_expr[4] = tint_symbol_19[1];
|
||||
const int nested_nonempty[2][3][4] = {{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}, {{13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24}}};
|
||||
const int tint_symbol[4] = {1, 2, x, (x + 1)};
|
||||
const int tint_symbol_1[4] = {5, 6, nonempty[2], (nonempty[3] + 1)};
|
||||
const int tint_symbol_2[3][4] = {tint_symbol, tint_symbol_1, nonempty};
|
||||
const int nested_nonempty_with_expr[2][3][4] = {tint_symbol_2, nested_nonempty[1]};
|
||||
const int subexpr_empty = 0;
|
||||
const int subexpr_nonempty = 3;
|
||||
const int tint_symbol_3[4] = {1, x, (x + 1), nonempty[3]};
|
||||
const int subexpr_nonempty_with_expr = tint_symbol_3[2];
|
||||
const int subexpr_nested_empty[4] = (int[4])0;
|
||||
const int subexpr_nested_nonempty[4] = {5, 6, 7, 8};
|
||||
const int tint_symbol_4[4] = {1, x, (x + 1), nonempty[3]};
|
||||
const int tint_symbol_5[2][4] = {tint_symbol_4, nested_nonempty[1][2]};
|
||||
const int subexpr_nested_nonempty_with_expr[4] = tint_symbol_5[1];
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -5,33 +5,19 @@ void main() {
|
||||
const int nonempty[4] = {1, 2, 3, 4};
|
||||
const int nonempty_with_expr[4] = {1, x, (x + 1), nonempty[3]};
|
||||
const int nested_empty[2][3][4] = (int[2][3][4])0;
|
||||
const int tint_symbol[4] = {1, 2, 3, 4};
|
||||
const int tint_symbol_1[4] = {5, 6, 7, 8};
|
||||
const int tint_symbol_2[4] = {9, 10, 11, 12};
|
||||
const int tint_symbol_3[3][4] = {tint_symbol, tint_symbol_1, tint_symbol_2};
|
||||
const int tint_symbol_4[4] = {13, 14, 15, 16};
|
||||
const int tint_symbol_5[4] = {17, 18, 19, 20};
|
||||
const int tint_symbol_6[4] = {21, 22, 23, 24};
|
||||
const int tint_symbol_7[3][4] = {tint_symbol_4, tint_symbol_5, tint_symbol_6};
|
||||
const int nested_nonempty[2][3][4] = {tint_symbol_3, tint_symbol_7};
|
||||
const int tint_symbol_8[4] = {1, 2, x, (x + 1)};
|
||||
const int tint_symbol_9[4] = {5, 6, nonempty[2], (nonempty[3] + 1)};
|
||||
const int tint_symbol_10[3][4] = {tint_symbol_8, tint_symbol_9, nonempty};
|
||||
const int nested_nonempty_with_expr[2][3][4] = {tint_symbol_10, nested_nonempty[1]};
|
||||
const int tint_symbol_11[4] = (int[4])0;
|
||||
const int subexpr_empty = tint_symbol_11[1];
|
||||
const int tint_symbol_12[4] = {1, 2, 3, 4};
|
||||
const int subexpr_nonempty = tint_symbol_12[2];
|
||||
const int tint_symbol_13[4] = {1, x, (x + 1), nonempty[3]};
|
||||
const int subexpr_nonempty_with_expr = tint_symbol_13[2];
|
||||
const int tint_symbol_14[2][4] = (int[2][4])0;
|
||||
const int subexpr_nested_empty[4] = tint_symbol_14[1];
|
||||
const int tint_symbol_15[4] = {1, 2, 3, 4};
|
||||
const int tint_symbol_16[4] = {5, 6, 7, 8};
|
||||
const int tint_symbol_17[2][4] = {tint_symbol_15, tint_symbol_16};
|
||||
const int subexpr_nested_nonempty[4] = tint_symbol_17[1];
|
||||
const int tint_symbol_18[4] = {1, x, (x + 1), nonempty[3]};
|
||||
const int tint_symbol_19[2][4] = {tint_symbol_18, nested_nonempty[1][2]};
|
||||
const int subexpr_nested_nonempty_with_expr[4] = tint_symbol_19[1];
|
||||
const int nested_nonempty[2][3][4] = {{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}, {{13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24}}};
|
||||
const int tint_symbol[4] = {1, 2, x, (x + 1)};
|
||||
const int tint_symbol_1[4] = {5, 6, nonempty[2], (nonempty[3] + 1)};
|
||||
const int tint_symbol_2[3][4] = {tint_symbol, tint_symbol_1, nonempty};
|
||||
const int nested_nonempty_with_expr[2][3][4] = {tint_symbol_2, nested_nonempty[1]};
|
||||
const int subexpr_empty = 0;
|
||||
const int subexpr_nonempty = 3;
|
||||
const int tint_symbol_3[4] = {1, x, (x + 1), nonempty[3]};
|
||||
const int subexpr_nonempty_with_expr = tint_symbol_3[2];
|
||||
const int subexpr_nested_empty[4] = (int[4])0;
|
||||
const int subexpr_nested_nonempty[4] = {5, 6, 7, 8};
|
||||
const int tint_symbol_4[4] = {1, x, (x + 1), nonempty[3]};
|
||||
const int tint_symbol_5[2][4] = {tint_symbol_4, nested_nonempty[1][2]};
|
||||
const int subexpr_nested_nonempty_with_expr[4] = tint_symbol_5[1];
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -6,34 +6,20 @@ void tint_symbol() {
|
||||
int nonempty[4] = int[4](1, 2, 3, 4);
|
||||
int nonempty_with_expr[4] = int[4](1, x, (x + 1), nonempty[3]);
|
||||
int nested_empty[2][3][4] = int[2][3][4](int[3][4](int[4](0, 0, 0, 0), int[4](0, 0, 0, 0), int[4](0, 0, 0, 0)), int[3][4](int[4](0, 0, 0, 0), int[4](0, 0, 0, 0), int[4](0, 0, 0, 0)));
|
||||
int tint_symbol_1[4] = int[4](1, 2, 3, 4);
|
||||
int tint_symbol_2[4] = int[4](5, 6, 7, 8);
|
||||
int tint_symbol_3[4] = int[4](9, 10, 11, 12);
|
||||
int tint_symbol_4[3][4] = int[3][4](tint_symbol_1, tint_symbol_2, tint_symbol_3);
|
||||
int tint_symbol_5[4] = int[4](13, 14, 15, 16);
|
||||
int tint_symbol_6[4] = int[4](17, 18, 19, 20);
|
||||
int tint_symbol_7[4] = int[4](21, 22, 23, 24);
|
||||
int tint_symbol_8[3][4] = int[3][4](tint_symbol_5, tint_symbol_6, tint_symbol_7);
|
||||
int nested_nonempty[2][3][4] = int[2][3][4](tint_symbol_4, tint_symbol_8);
|
||||
int tint_symbol_9[4] = int[4](1, 2, x, (x + 1));
|
||||
int tint_symbol_10[4] = int[4](5, 6, nonempty[2], (nonempty[3] + 1));
|
||||
int tint_symbol_11[3][4] = int[3][4](tint_symbol_9, tint_symbol_10, nonempty);
|
||||
int nested_nonempty_with_expr[2][3][4] = int[2][3][4](tint_symbol_11, nested_nonempty[1]);
|
||||
int tint_symbol_12[4] = int[4](0, 0, 0, 0);
|
||||
int subexpr_empty = tint_symbol_12[1];
|
||||
int tint_symbol_13[4] = int[4](1, 2, 3, 4);
|
||||
int subexpr_nonempty = tint_symbol_13[2];
|
||||
int tint_symbol_14[4] = int[4](1, x, (x + 1), nonempty[3]);
|
||||
int subexpr_nonempty_with_expr = tint_symbol_14[2];
|
||||
int tint_symbol_15[2][4] = int[2][4](int[4](0, 0, 0, 0), int[4](0, 0, 0, 0));
|
||||
int subexpr_nested_empty[4] = tint_symbol_15[1];
|
||||
int tint_symbol_16[4] = int[4](1, 2, 3, 4);
|
||||
int tint_symbol_17[4] = int[4](5, 6, 7, 8);
|
||||
int tint_symbol_18[2][4] = int[2][4](tint_symbol_16, tint_symbol_17);
|
||||
int subexpr_nested_nonempty[4] = tint_symbol_18[1];
|
||||
int tint_symbol_19[4] = int[4](1, x, (x + 1), nonempty[3]);
|
||||
int tint_symbol_20[2][4] = int[2][4](tint_symbol_19, nested_nonempty[1][2]);
|
||||
int subexpr_nested_nonempty_with_expr[4] = tint_symbol_20[1];
|
||||
int nested_nonempty[2][3][4] = int[2][3][4](int[3][4](int[4](1, 2, 3, 4), int[4](5, 6, 7, 8), int[4](9, 10, 11, 12)), int[3][4](int[4](13, 14, 15, 16), int[4](17, 18, 19, 20), int[4](21, 22, 23, 24)));
|
||||
int tint_symbol_1[4] = int[4](1, 2, x, (x + 1));
|
||||
int tint_symbol_2[4] = int[4](5, 6, nonempty[2], (nonempty[3] + 1));
|
||||
int tint_symbol_3[3][4] = int[3][4](tint_symbol_1, tint_symbol_2, nonempty);
|
||||
int nested_nonempty_with_expr[2][3][4] = int[2][3][4](tint_symbol_3, nested_nonempty[1]);
|
||||
int subexpr_empty = 0;
|
||||
int subexpr_nonempty = 3;
|
||||
int tint_symbol_4[4] = int[4](1, x, (x + 1), nonempty[3]);
|
||||
int subexpr_nonempty_with_expr = tint_symbol_4[2];
|
||||
int subexpr_nested_empty[4] = int[4](0, 0, 0, 0);
|
||||
int subexpr_nested_nonempty[4] = int[4](5, 6, 7, 8);
|
||||
int tint_symbol_5[4] = int[4](1, x, (x + 1), nonempty[3]);
|
||||
int tint_symbol_6[2][4] = int[2][4](tint_symbol_5, nested_nonempty[1][2]);
|
||||
int subexpr_nested_nonempty_with_expr[4] = tint_symbol_6[1];
|
||||
}
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
|
||||
@@ -20,34 +20,20 @@ kernel void tint_symbol() {
|
||||
tint_array<int, 4> const nonempty = tint_array<int, 4>{1, 2, 3, 4};
|
||||
tint_array<int, 4> const nonempty_with_expr = tint_array<int, 4>{1, x, as_type<int>((as_type<uint>(x) + as_type<uint>(1))), nonempty[3]};
|
||||
tint_array<tint_array<tint_array<int, 4>, 3>, 2> const nested_empty = tint_array<tint_array<tint_array<int, 4>, 3>, 2>{};
|
||||
tint_array<int, 4> const tint_symbol_1 = tint_array<int, 4>{1, 2, 3, 4};
|
||||
tint_array<int, 4> const tint_symbol_2 = tint_array<int, 4>{5, 6, 7, 8};
|
||||
tint_array<int, 4> const tint_symbol_3 = tint_array<int, 4>{9, 10, 11, 12};
|
||||
tint_array<tint_array<int, 4>, 3> const tint_symbol_4 = tint_array<tint_array<int, 4>, 3>{tint_symbol_1, tint_symbol_2, tint_symbol_3};
|
||||
tint_array<int, 4> const tint_symbol_5 = tint_array<int, 4>{13, 14, 15, 16};
|
||||
tint_array<int, 4> const tint_symbol_6 = tint_array<int, 4>{17, 18, 19, 20};
|
||||
tint_array<int, 4> const tint_symbol_7 = tint_array<int, 4>{21, 22, 23, 24};
|
||||
tint_array<tint_array<int, 4>, 3> const tint_symbol_8 = tint_array<tint_array<int, 4>, 3>{tint_symbol_5, tint_symbol_6, tint_symbol_7};
|
||||
tint_array<tint_array<tint_array<int, 4>, 3>, 2> const nested_nonempty = tint_array<tint_array<tint_array<int, 4>, 3>, 2>{tint_symbol_4, tint_symbol_8};
|
||||
tint_array<int, 4> const tint_symbol_9 = tint_array<int, 4>{1, 2, x, as_type<int>((as_type<uint>(x) + as_type<uint>(1)))};
|
||||
tint_array<int, 4> const tint_symbol_10 = tint_array<int, 4>{5, 6, nonempty[2], as_type<int>((as_type<uint>(nonempty[3]) + as_type<uint>(1)))};
|
||||
tint_array<tint_array<int, 4>, 3> const tint_symbol_11 = tint_array<tint_array<int, 4>, 3>{tint_symbol_9, tint_symbol_10, nonempty};
|
||||
tint_array<tint_array<tint_array<int, 4>, 3>, 2> const nested_nonempty_with_expr = tint_array<tint_array<tint_array<int, 4>, 3>, 2>{tint_symbol_11, nested_nonempty[1]};
|
||||
tint_array<int, 4> const tint_symbol_12 = tint_array<int, 4>{};
|
||||
int const subexpr_empty = tint_symbol_12[1];
|
||||
tint_array<int, 4> const tint_symbol_13 = tint_array<int, 4>{1, 2, 3, 4};
|
||||
int const subexpr_nonempty = tint_symbol_13[2];
|
||||
tint_array<int, 4> const tint_symbol_14 = tint_array<int, 4>{1, x, as_type<int>((as_type<uint>(x) + as_type<uint>(1))), nonempty[3]};
|
||||
int const subexpr_nonempty_with_expr = tint_symbol_14[2];
|
||||
tint_array<tint_array<int, 4>, 2> const tint_symbol_15 = tint_array<tint_array<int, 4>, 2>{};
|
||||
tint_array<int, 4> const subexpr_nested_empty = tint_symbol_15[1];
|
||||
tint_array<int, 4> const tint_symbol_16 = tint_array<int, 4>{1, 2, 3, 4};
|
||||
tint_array<int, 4> const tint_symbol_17 = tint_array<int, 4>{5, 6, 7, 8};
|
||||
tint_array<tint_array<int, 4>, 2> const tint_symbol_18 = tint_array<tint_array<int, 4>, 2>{tint_symbol_16, tint_symbol_17};
|
||||
tint_array<int, 4> const subexpr_nested_nonempty = tint_symbol_18[1];
|
||||
tint_array<int, 4> const tint_symbol_19 = tint_array<int, 4>{1, x, as_type<int>((as_type<uint>(x) + as_type<uint>(1))), nonempty[3]};
|
||||
tint_array<tint_array<int, 4>, 2> const tint_symbol_20 = tint_array<tint_array<int, 4>, 2>{tint_symbol_19, nested_nonempty[1][2]};
|
||||
tint_array<int, 4> const subexpr_nested_nonempty_with_expr = tint_symbol_20[1];
|
||||
tint_array<tint_array<tint_array<int, 4>, 3>, 2> const nested_nonempty = tint_array<tint_array<tint_array<int, 4>, 3>, 2>{tint_array<tint_array<int, 4>, 3>{tint_array<int, 4>{1, 2, 3, 4}, tint_array<int, 4>{5, 6, 7, 8}, tint_array<int, 4>{9, 10, 11, 12}}, tint_array<tint_array<int, 4>, 3>{tint_array<int, 4>{13, 14, 15, 16}, tint_array<int, 4>{17, 18, 19, 20}, tint_array<int, 4>{21, 22, 23, 24}}};
|
||||
tint_array<int, 4> const tint_symbol_1 = tint_array<int, 4>{1, 2, x, as_type<int>((as_type<uint>(x) + as_type<uint>(1)))};
|
||||
tint_array<int, 4> const tint_symbol_2 = tint_array<int, 4>{5, 6, nonempty[2], as_type<int>((as_type<uint>(nonempty[3]) + as_type<uint>(1)))};
|
||||
tint_array<tint_array<int, 4>, 3> const tint_symbol_3 = tint_array<tint_array<int, 4>, 3>{tint_symbol_1, tint_symbol_2, nonempty};
|
||||
tint_array<tint_array<tint_array<int, 4>, 3>, 2> const nested_nonempty_with_expr = tint_array<tint_array<tint_array<int, 4>, 3>, 2>{tint_symbol_3, nested_nonempty[1]};
|
||||
int const subexpr_empty = 0;
|
||||
int const subexpr_nonempty = 3;
|
||||
tint_array<int, 4> const tint_symbol_4 = tint_array<int, 4>{1, x, as_type<int>((as_type<uint>(x) + as_type<uint>(1))), nonempty[3]};
|
||||
int const subexpr_nonempty_with_expr = tint_symbol_4[2];
|
||||
tint_array<int, 4> const subexpr_nested_empty = tint_array<int, 4>{};
|
||||
tint_array<int, 4> const subexpr_nested_nonempty = tint_array<int, 4>{5, 6, 7, 8};
|
||||
tint_array<int, 4> const tint_symbol_5 = tint_array<int, 4>{1, x, as_type<int>((as_type<uint>(x) + as_type<uint>(1))), nonempty[3]};
|
||||
tint_array<tint_array<int, 4>, 2> const tint_symbol_6 = tint_array<tint_array<int, 4>, 2>{tint_symbol_5, nested_nonempty[1][2]};
|
||||
tint_array<int, 4> const subexpr_nested_nonempty_with_expr = tint_symbol_6[1];
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user