{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/12489","repository_url":"https://api.github.com/repos/dotnet/coreclr","labels_url":"https://api.github.com/repos/dotnet/coreclr/issues/12489/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/12489/comments","events_url":"https://api.github.com/repos/dotnet/coreclr/issues/12489/events","html_url":"https://github.com/dotnet/coreclr/pull/12489","id":238963400,"number":12489,"title":"[Arm64|Amd64 Unix] Correct Unix and Arm64 fastTailCall decisions","user":{"login":"jashook","id":2723327,"avatar_url":"https://avatars3.githubusercontent.com/u/2723327?v=3","gravatar_id":"","url":"https://api.github.com/users/jashook","html_url":"https://github.com/jashook","followers_url":"https://api.github.com/users/jashook/followers","following_url":"https://api.github.com/users/jashook/following{/other_user}","gists_url":"https://api.github.com/users/jashook/gists{/gist_id}","starred_url":"https://api.github.com/users/jashook/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jashook/subscriptions","organizations_url":"https://api.github.com/users/jashook/orgs","repos_url":"https://api.github.com/users/jashook/repos","events_url":"https://api.github.com/users/jashook/events{/privacy}","received_events_url":"https://api.github.com/users/jashook/received_events","type":"User","site_admin":false},"labels":[{"id":196940911,"url":"https://api.github.com/repos/dotnet/coreclr/labels/area-CodeGen","name":"area-CodeGen","color":"d4c5f9","default":false},{"id":197462704,"url":"https://api.github.com/repos/dotnet/coreclr/labels/cla-already-signed","name":"cla-already-signed","color":"009800","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":19,"created_at":"2017-06-27T19:53:53Z","updated_at":"2017-07-06T01:00:13Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/12489","html_url":"https://github.com/dotnet/coreclr/pull/12489","diff_url":"https://github.com/dotnet/coreclr/pull/12489.diff","patch_url":"https://github.com/dotnet/coreclr/pull/12489.patch"},"body":"This will change how the fastTailCall decision is made. Before this change\r\nthe decision was based on the amount of incoming and outgoing caller arguments.\r\nThis was incorrect on Linux and Arm64 because one argument does not translate\r\nto one register or one stack slot use.\r\n\r\nBefore this change structs on Arm64 and Amd64 Unix could incorrectly choose\r\nnot to fastTailCall if the callee had struct parameters that took more than one register to pass. See #2666 for more details.\r\n\r\nThis will also fix several cases for determining when to fastTailCall on\r\narm64 and amd64 unix. This change will keep #12468 from happening by deciding to not fastTailCall when theoretically possible. The case where this will hit is if the callee has stack usage and the caller and callee have different amounts of arguments. This change will cause this case to always not fastTailCall. Even though the following case should be allowed (on x64 linux). \r\n\r\n```\r\n// 1 int register use, stack size 60\r\nvoid caller(int, { structOfSize 60 })\r\n\r\n// 6 int register uses, stack size 16\r\nvoid callee(int, int, int, int, int, int, int, int)\r\n```\r\n\r\nFixes #2666\r\nFixes #12479 "},"comment":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/comments/313266541","html_url":"https://github.com/dotnet/coreclr/pull/12489#issuecomment-313266541","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/12489","id":313266541,"user":{"login":"jashook","id":2723327,"avatar_url":"https://avatars3.githubusercontent.com/u/2723327?v=3","gravatar_id":"","url":"https://api.github.com/users/jashook","html_url":"https://github.com/jashook","followers_url":"https://api.github.com/users/jashook/followers","following_url":"https://api.github.com/users/jashook/following{/other_user}","gists_url":"https://api.github.com/users/jashook/gists{/gist_id}","starred_url":"https://api.github.com/users/jashook/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jashook/subscriptions","organizations_url":"https://api.github.com/users/jashook/orgs","repos_url":"https://api.github.com/users/jashook/repos","events_url":"https://api.github.com/users/jashook/events{/privacy}","received_events_url":"https://api.github.com/users/jashook/received_events","type":"User","site_admin":false},"created_at":"2017-07-06T01:00:13Z","updated_at":"2017-07-06T01:00:13Z","body":"@dotnet-bot test Windows_NT x64 Debug Build and Test"}}
{"actor":{"display_login":"jashook"}}