authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-12-07 14:48:10+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-12-07 14:48:24+02:00
logdff32a2cd73bf222b80ddc48c875fa0745288203
tree5acc46c5c5a98489f7ae2b949177836d789e89c9
parentddce76059b1631f3eddc3c09615b26698210ba9e

Sema: resolve lazy values in analyzeMinMax

Closes #13797

2 files changed, 10 insertions(+), 0 deletions(-)

src/Sema.zig+3
...@@ -21011,6 +21011,9 @@ fn analyzeMinMax(...@@ -21011,6 +21011,9 @@ fn analyzeMinMax(
2101121011
21012 if (rhs_val.isUndef()) return sema.addConstUndef(simd_op.result_ty);21012 if (rhs_val.isUndef()) return sema.addConstUndef(simd_op.result_ty);
2101321013
21014 try sema.resolveLazyValue(lhs_val);
21015 try sema.resolveLazyValue(rhs_val);
21016
21014 const opFunc = switch (air_tag) {21017 const opFunc = switch (air_tag) {
21015 .min => Value.numberMin,21018 .min => Value.numberMin,
21016 .max => Value.numberMax,21019 .max => Value.numberMax,
test/behavior/maximum_minimum.zig+7
...@@ -95,3 +95,10 @@ test "@min for vectors" {...@@ -95,3 +95,10 @@ test "@min for vectors" {
95 try S.doTheTest();95 try S.doTheTest();
96 comptime try S.doTheTest();96 comptime try S.doTheTest();
97}97}
98
99test "@min/@max on lazy values" {
100 const A = extern struct { u8_4: [4]u8 };
101 const B = extern struct { u8_16: [16]u8 };
102 const size = @max(@sizeOf(A), @sizeOf(B));
103 try expect(size == @sizeOf(B));
104}