Open
Description
While generating indirect call for R2R, I have noticed we generate redundant indirect address loads in x11
as well as x4
and end up using the one present in x4
. In dotnet/coreclr#5020 we fixed x11
as being a register to store indirect cell address, but in dotnet/coreclr#16171 we moved to morph phase. However with that, we end up creating 2nd redundant addrp/add
pair inside lower that uses x4
register.
9000000B adrp x11, [RELOC #0x20a0e212c50]
9100016B add x11, x11, #0
90000004 adrp x4, [RELOC #0x20a0e212c50]
91000084 add x4, x4, #0
F9400084 ldr x4, [x4]
D63F0080 blr x4
We need to investigate to see why x4
is needed and if yes, then simplify it to mov x4, x11
.
category:cq
theme:ready-to-run
skill-level:intermediate
cost:large