Runtime: JIT: рдмреЙрдХреНрд╕рд┐рдВрдЧ (x) == рдмреЙрдХреНрд╕рд┐рдВрдЧ (y) рдХреЛ рдЕрд╕рддреНрдп рдореЗрдВ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдирд╡ре░ 2019  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dotnet/runtime

static bool Generic<T1, T2>(T1 a, T2 b)
{
    return (object)a == (object)b;
}

static bool Test()
{
    return Generic(42, 3.14);
}

Test рдХреЗ рд▓рд┐рдП рдХреЛрдбрдЬреЗрди :

; Method Program:Test():bool
G_M11853_IG01:
       push     rsi
       sub      rsp, 32
       vzeroupper 
G_M11853_IG02:
       mov      rcx, 0xD1FFAB1E
       call     CORINFO_HELP_NEWSFAST
       mov      rsi, rax
       mov      dword ptr [rsi+8], 42
       mov      rcx, 0xD1FFAB1E
       call     CORINFO_HELP_NEWSFAST
       vmovsd   xmm0, qword ptr [reloc @RWD00]
       vmovsd   qword ptr [rax+8], xmm0
       cmp      rsi, rax
       sete     al
       movzx    rax, al
G_M11853_IG03:
       add      rsp, 32
       pop      rsi
       ret      
RWD00  dq   40091EB851EB851Fh

```
--* EQ\NE int
+--* рдмреЙрдХреНрд╕ рд░реЗрдлрд░реА
| --* LCL_VAR рд░реЗрдлрд░реА V03 tmp1
--* рдмреЙрдХреНрд╕ рд░реЗрдлрд░реА
--* LCL_VAR рд░реЗрдлрд░реА V04 tmp2

Expected codegen:
```asm
; Method Program:Test():bool
       xor      eax, eax  ; return false 
       ret     

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ CoreCLR рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реА рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдХреНрдХреЗрдмрд╛рдЬреА рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП boxing(x) == null рд╕реЗ false рдЖрджрд┐, рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП https://github.com/mono/mono/issues/17858 рджреЗрдЦреЗрдВ) .

рд╢реНрд░реЗрдгреА: рд╕реАрдХреНрдпреВ
рд╡рд┐рд╖рдп: рдЕрдиреБрдХреВрд▓рди
рдХреМрд╢рд▓- рд╕реНрддрд░:рдордзреНрдпрд╡рд░реНрддреА
рд▓рд╛рдЧрдд: рдордзреНрдпрдо

area-CodeGen-coreclr optimization

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@jkotas рдореИрдВрдиреЗ рдПрдХ рддреНрд╡рд░рд┐рдд рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдпрд╛ рдФрд░ jit-diff рдиреЗ BCL рдХреЗ рд▓рд┐рдП рдХреБрдЫ kb рдЕрдВрддрд░ рдкрд╛рдпрд╛, рдЬреИрд╕реЗ https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data /RbTree.cs#L1581

рдпреВрдкреАрдбреА: рдареАрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ pmi рдЗрд╕реЗ рдЦреБрд░рд╛рдХ рджреЗ рд░рд╣рд╛ рдерд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЛрдб рдореЗрдВ рдХрднреА рдирд╣реАрдВ рджрд┐рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ ....

@jkotas рдореИрдВрдиреЗ рдПрдХ рддреНрд╡рд░рд┐рдд рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдпрд╛ рдФрд░ jit-diff рдиреЗ BCL рдХреЗ рд▓рд┐рдП рдХреБрдЫ kb рдЕрдВрддрд░ рдкрд╛рдпрд╛, рдЬреИрд╕реЗ https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data /RbTree.cs#L1581

рдпреВрдкреАрдбреА: рдареАрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ pmi рдЗрд╕реЗ рдЦреБрд░рд╛рдХ рджреЗ рд░рд╣рд╛ рдерд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдЙрдореНрдореАрдж рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдХреЛрдб рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рддрдм рддрдХ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рджреЗрдЦрддреЗред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕