From dff32a2cd73bf222b80ddc48c875fa0745288203 Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Wed, 7 Dec 2022 14:48:10 +0200 Subject: [PATCH] Sema: resolve lazy values in analyzeMinMax Closes #13797 --- src/Sema.zig | 3 +++ test/behavior/maximum_minimum.zig | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/src/Sema.zig b/src/Sema.zig index 50511bc57a5ae143388de4529a290599df7bdfa5..3edc35aeb65c82c19c4d09f4a80175ea2817c892 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -21011,6 +21011,9 @@ fn analyzeMinMax( if (rhs_val.isUndef()) return sema.addConstUndef(simd_op.result_ty); + try sema.resolveLazyValue(lhs_val); + try sema.resolveLazyValue(rhs_val); + const opFunc = switch (air_tag) { .min => Value.numberMin, .max => Value.numberMax, diff --git a/test/behavior/maximum_minimum.zig b/test/behavior/maximum_minimum.zig index 977d06204e43de5d2c323508db3de579d563e446..79ec5f14fa802c207f727897e23f5c20f839c123 100644 --- a/test/behavior/maximum_minimum.zig +++ b/test/behavior/maximum_minimum.zig @@ -95,3 +95,10 @@ test "@min for vectors" { try S.doTheTest(); comptime try S.doTheTest(); } + +test "@min/@max on lazy values" { + const A = extern struct { u8_4: [4]u8 }; + const B = extern struct { u8_16: [16]u8 }; + const size = @max(@sizeOf(A), @sizeOf(B)); + try expect(size == @sizeOf(B)); +} -- 2.54.0