I hit on different input argument r1 usage generated by crossgen2 and Tier-1 compilation on lambda-expression MyStruct { int a; int b; long c; }:
varsoldOutProducts=products.Where(p =>p.MyStruct.a>0x300||p.MyStruct.b>0x50000||p.MyStruct.c>0x6000000);
Code generated by crossgen2 uses r1+36:
000006 6A48 ldr r0,[r1+36]000008 F5B0 7F40 cmp r0,76800000C DC14 bgt SHORT G_M16079_IG06 ;; bbWeight=1 PerfScore 3.00G_M16079_IG03:00000E 6A88 ldr r0,[r1+40]000010 F5B0 2FA0 cmp r0,0x50000000014 DC10 bgt SHORT G_M16079_IG06000016 F101 002C add r0, r1,4400001A 6803 ldr r3,[r0]00001C 6840 ldr r0,[r0+4]
Code generated by Tier-1 uses r1+40:
G_M16079_IG02:000006 6A88 ldr r0,[r1+40]000008 F5B0 7F40 cmp r0,76800000C DC14 bgt SHORT G_M16079_IG06 ;; bbWeight=1 PerfScore 3.00G_M16079_IG03:00000E 6AC8 ldr r0,[r1+44]000010 F5B0 2FA0 cmp r0,0x50000000014 DC10 bgt SHORT G_M16079_IG06000016 F101 0030add r0, r1,4800001A 6803 ldr r3,[r0]00001C 6840 ldr r0,[r0+4]
MyStruct.cg2.dump.txt
MyStruct.cg2.S.txt
MyStruct.cg2-tier.dump.txt
MyStruct.cg2-tier.S.txt
Discussion started in PR38390
I hit on different input argument r1 usage generated by crossgen2 and Tier-1 compilation on lambda-expression
MyStruct { int a; int b; long c; }:Code generated by crossgen2 uses
r1+36:Code generated by Tier-1 uses
r1+40:MyStruct.cg2.dump.txt
MyStruct.cg2.S.txt
MyStruct.cg2-tier.dump.txt
MyStruct.cg2-tier.S.txt
Discussion started in PR38390