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.

Reply via email to