-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ARM64: Left over dead code for special throw blocks #37675
Comments
I couldn't figure out the best area label to add to this issue. Please help me learn by adding exactly one area label. |
@dotnet/jit-contrib |
Looks like we add those |
Marking as future. |
Let's close it then and re-open/re-create if we find a pattern that is not optimized today. Current asm for the Kunal's snippet: ; Method C:DivTest(uint):uint (FullOpts)
G_M2997_IG01: ;; offset=0x0000
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M2997_IG02: ;; offset=0x0008
lsr w0, w0, #2
;; size=4 bbWeight=1 PerfScore 1.00
G_M2997_IG03: ;; offset=0x000C
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
; Total bytes of code: 20
|
I would expect #95379 to catch most cases of this. |
While debugging something on ARM64, I noticed that we end up leaving some of the dead code in place.
Generates the following where
IG04
block is dead:For
int
parameter, we have 2 blocks that are dead:We don't produce dead BB if I change from division to bit-shift like
xr >> 2
. I was assuming there be some dead code elimination phase, but looking at dumps I didn't see anything like that happening.category:cq
theme:dead-code
skill-level:intermediate
cost:medium
The text was updated successfully, but these errors were encountered: