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.
This commit is contained in:
mlugg 2025-02-05 19:56:43 +00:00
parent fbe0ae4fd4
commit 9ba9f457be
No known key found for this signature in database
GPG Key ID: 3F5B7DCCBF4AF02E

View File

@ -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);