From 9ba9f457be13c0c32981e94cf75ba7ea6619d92f Mon Sep 17 00:00:00 2001 From: mlugg Date: Wed, 5 Feb 2025 19:56:43 +0000 Subject: [PATCH] Sema: add fast path to PTR when all types are the same I have no idea why I didn't add this when I first implemented this PTR logic. --- src/Sema.zig | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Sema.zig b/src/Sema.zig index 97e90da92e..9dc7755a10 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -33930,6 +33930,17 @@ fn resolvePeerTypes( else => {}, } + // Fast path: check if everything has the same type to bypass the main PTR logic. + same_type: { + const ty = sema.typeOf(instructions[0]); + for (instructions[1..]) |inst| { + if (sema.typeOf(inst).toIntern() != ty.toIntern()) { + break :same_type; + } + } + return ty; + } + const peer_tys = try sema.arena.alloc(?Type, instructions.len); const peer_vals = try sema.arena.alloc(?Value, instructions.len);