{"push_id":1299226260,"size":5,"distinct_size":5,"ref":"refs/heads/master","head":"c929358d7d46997f7e5e14042f88c03ddc4e53b7","before":"7fbc418b6cc41bed70f749bac47f18d6d82fd187","commits":[{"sha":"4dc7c44f3e466067b73f7f28c0b69a7878b4ca20","author":{"name":"Mike Danes","email":"6a9052e11739629404b1b31014ff5abd504a32f9@hotmail.com"},"message":"Implement long compare lowering for x86.\n\nComparisons between long-typed values on x86 require at least two and\nat most three separate branches: one or two to compare the high 32\nbits and one to compare the low 32 bits. In essence, each long\ncompare introduces two additional basic blocks into the flow graph,\nbut these blocks were not reified until code generation. Furthermore,\ncode generation of a long comparison used by a JTRUE was deferred\nuntil the JTRUE itself without marking the inputs to the compare as\nlive at the JTRUE. Taken together, these representational issues\ncaused bugs like the one seen in the the following assembly:\n\n       33DB         xor      ebx, ebx\n       BE03000000   mov      esi, 3\n       33FF         xor      edi, edi\n       8B75F0       mov      esi, dword ptr [ebp-10H] ; these 2 are reloads inserted by LSRA\n       8B7DEC       mov      edi, dword ptr [ebp-14H] ; between the compare and the branch\n       3BDF         cmp      ebx, edi\n       72D6         jb       SHORT G_M51005_IG03\n       7704         ja       SHORT G_M51005_IG04\n       3BC6         cmp      eax, esi\n       72D0         jb       SHORT G_M51005_IG03\n\nThe reloads that LSRA has inserted have killed the registers assigned\nto the inputs to the compare, thus causing the compare instructions\nto read unexpected values (GH #7038).\n\nAlthough a number of alternatives were discussed, the best solution\nseems to be to expose the control flow via the flow graph rather than\nleaving it until code generation; this commit implements that approach.","distinct":true,"url":"https://api.github.com/repos/dotnet/coreclr/commits/4dc7c44f3e466067b73f7f28c0b69a7878b4ca20"},{"sha":"4351a27c18a88c50c0e701975d9a58f5ade57e78","author":{"name":"Pat Gavlin","email":"31abb87c1630f1a235ae3e5824500fcc02bda71b@microsoft.com"},"message":"Introduce GT_JCC.\n\nThis node represents a jump that is conditional upon the value stored in\nthe target's condition code register. It is only valid in the backend.\nNo formal modeling of the CCR is performed, so its use must be\nconstrained such that instructions that def the CCR are not inserted\nbetween the JCC node and the node that it expected to def the CCR.\n\nThis is currently only used when lowering compares of long-typed\nvalues for x86.","distinct":true,"url":"https://api.github.com/repos/dotnet/coreclr/commits/4351a27c18a88c50c0e701975d9a58f5ade57e78"},{"sha":"1288ca5b05d84dee01b1612d93cb1a04ecc2c727","author":{"name":"Pat Gavlin","email":"31abb87c1630f1a235ae3e5824500fcc02bda71b@microsoft.com"},"message":"Address PR feedback.","distinct":true,"url":"https://api.github.com/repos/dotnet/coreclr/commits/1288ca5b05d84dee01b1612d93cb1a04ecc2c727"},{"sha":"9667abeeabc847914933915a8a153ef27d49ec7c","author":{"name":"Pat Gavlin","email":"31abb87c1630f1a235ae3e5824500fcc02bda71b@microsoft.com"},"message":"Address more PR feedback.","distinct":true,"url":"https://api.github.com/repos/dotnet/coreclr/commits/9667abeeabc847914933915a8a153ef27d49ec7c"},{"sha":"c929358d7d46997f7e5e14042f88c03ddc4e53b7","author":{"name":"Pat Gavlin","email":"324147c0e7e65f4285291b25db1c19ffc72308a9@gmail.com"},"message":"Merge pull request #7189 from pgavlin/x86-cmp-long\n\nImplement long compare lowering for x86.","distinct":true,"url":"https://api.github.com/repos/dotnet/coreclr/commits/c929358d7d46997f7e5e14042f88c03ddc4e53b7"}]}
{"actor":{"display_login":"pgavlin"}}