{"action":"opened","issue":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/8243","repository_url":"https://api.github.com/repos/dotnet/coreclr","labels_url":"https://api.github.com/repos/dotnet/coreclr/issues/8243/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/8243/comments","events_url":"https://api.github.com/repos/dotnet/coreclr/issues/8243/events","html_url":"https://github.com/dotnet/coreclr/issues/8243","id":190880672,"number":8243,"title":"RyuJIT/x86: import non-target intrinsics as intrinsics","user":{"login":"pgavlin","id":1224093,"avatar_url":"https://avatars.githubusercontent.com/u/1224093?v=3","gravatar_id":"","url":"https://api.github.com/users/pgavlin","html_url":"https://github.com/pgavlin","followers_url":"https://api.github.com/users/pgavlin/followers","following_url":"https://api.github.com/users/pgavlin/following{/other_user}","gists_url":"https://api.github.com/users/pgavlin/gists{/gist_id}","starred_url":"https://api.github.com/users/pgavlin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pgavlin/subscriptions","organizations_url":"https://api.github.com/users/pgavlin/orgs","repos_url":"https://api.github.com/users/pgavlin/repos","events_url":"https://api.github.com/users/pgavlin/events{/privacy}","received_events_url":"https://api.github.com/users/pgavlin/received_events","type":"User","site_admin":false},"labels":[{"id":330164122,"url":"https://api.github.com/repos/dotnet/coreclr/labels/x86","name":"x86","color":"eb6420","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-11-22T01:05:49Z","updated_at":"2016-11-22T01:05:49Z","closed_at":null,"body":"As of #8235, RyuJIT/x86 imports intrinsics that are not supported by the target as calls to user functions. This has an obvious CQ downside in that it prohibits the compiler from reasoning more precisely about the behavior of the calls. Unfortunately, there is a phase ordering issue that complicates importing these intrinsics as intrinsics and allowing the rationalizer to rewrite them back into user calls: on x86, morph is responsible for calculating the depth of the stack at certain points in the method, but it does not handle intrinsics when doing so. Incorrect stack depth information can cause SBCG in functions with EH.\r\n\r\nThe most straightforward fix aside from the one that was chosen by #8235 would seem to be to update morph to take non-target intrinsics into account when calculating the stack depth."}}
{"actor":{"display_login":"pgavlin"}}