Commit 9ba9f457be

mlugg <mlugg@mlugg.co.uk>
2025-02-05 20:56:43
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.
1 parent fbe0ae4
Changed files (1)
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);