Hi, I've been investigating rematerialising flag setting instructions in VisitWordCompareZero, just by removing the CanCover check, and something is going wrong with turboshaft.
I have an arithmetic overflow operation, Int32AddWithOverflow, and the overflow check is used by two branch operations. With a turbofan-only flow, the overflow operation and the projection will be duplicated for the second branch, and everything is fine. But with turboshaft, neither the overflow operation or projection are duplicated and the second branch uses the original projection[1] value. This looks fine at the IR level, but ends up broken after isel when the register allocator comes across a virtual register without a definition. This happens for both x64 and arm64, so I'm assuming turboshaft is making some assumptions, based on the current behaviour, that are non-obvious to me. Any ideas? Thanks! Sam -- -- v8-dev mailing list v8-dev@googlegroups.com http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/175a4ba2-9d33-45bb-84e3-91d41a722846n%40googlegroups.com.