{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/23240","repository_url":"https://api.github.com/repos/JuliaLang/julia","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/23240/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/23240/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/23240/events","html_url":"https://github.com/JuliaLang/julia/pull/23240","id":249888484,"number":23240,"title":"WIP: Much more aggressive alloc_elim_pass!","user":{"login":"yuyichao","id":712232,"avatar_url":"https://avatars3.githubusercontent.com/u/712232?v=4","gravatar_id":"","url":"https://api.github.com/users/yuyichao","html_url":"https://github.com/yuyichao","followers_url":"https://api.github.com/users/yuyichao/followers","following_url":"https://api.github.com/users/yuyichao/following{/other_user}","gists_url":"https://api.github.com/users/yuyichao/gists{/gist_id}","starred_url":"https://api.github.com/users/yuyichao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yuyichao/subscriptions","organizations_url":"https://api.github.com/users/yuyichao/orgs","repos_url":"https://api.github.com/users/yuyichao/repos","events_url":"https://api.github.com/users/yuyichao/events{/privacy}","received_events_url":"https://api.github.com/users/yuyichao/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2017-08-13T17:58:00Z","updated_at":"2017-08-14T03:59:29Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/23240","html_url":"https://github.com/JuliaLang/julia/pull/23240","diff_url":"https://github.com/JuliaLang/julia/pull/23240.diff","patch_url":"https://github.com/JuliaLang/julia/pull/23240.patch"},"body":"Still WIP but this is the first version that should in theory do no worse than the old version and doesn't crash the sysimg compilation.....\r\n\r\nThis fixes a large number of issues including\r\n* https://github.com/JuliaLang/julia/issues/16190 (which is **NOT** a dup of the issue it is linked to)\r\n* A more greedy version of https://github.com/JuliaLang/julia/issues/10899 (the issue itself is already fixed)\r\n* Partly https://github.com/JuliaLang/julia/issues/18823#issuecomment-320060773 (see the TODO in `split_struct_alloc!`)\r\n* https://github.com/JuliaLang/julia/issues/22999\r\n* The type instability when assigning a variable multiple leafttypes that doesn't have overlapping use.\r\n* Replaces https://github.com/JuliaLang/julia/pull/16969\r\n\r\nThis is almost as much as one can optimize in a control flow insensitive pass. A few optimization that are not implemented yet are\r\n* Elide allocation with there are multiple assignments\r\n* Lazy allocation of objects in error path so that `SubArray` creation with non-inbounds access can also be elided.\r\n\r\nThis relies on a linear IR so I wrote a simple linearize pass before running this one. The main reason for this and the hardest/longes part of this is to keep track of defs and uses as the IR is being updated to avoid a full scan of the IR after each change. A verifying function is added to make sure the infomation is (manually) kept up-to-date (disabled even for debug build since it's really slow (full scan of the function after each change)).\r\n\r\nThere are a few know test failure but they are mostly related to linear ir.\r\n\r\nI'm not confident that this won't crash but let's try. Just a warning that in case this crashes Pkg the nanosoldier might need a manual reset.\r\n@nanosoldier `runbenchmarks(ALL, vs=\":master\")`\r\n"},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/322094946","html_url":"https://github.com/JuliaLang/julia/pull/23240#issuecomment-322094946","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/23240","id":322094946,"user":{"login":"yuyichao","id":712232,"avatar_url":"https://avatars3.githubusercontent.com/u/712232?v=4","gravatar_id":"","url":"https://api.github.com/users/yuyichao","html_url":"https://github.com/yuyichao","followers_url":"https://api.github.com/users/yuyichao/followers","following_url":"https://api.github.com/users/yuyichao/following{/other_user}","gists_url":"https://api.github.com/users/yuyichao/gists{/gist_id}","starred_url":"https://api.github.com/users/yuyichao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yuyichao/subscriptions","organizations_url":"https://api.github.com/users/yuyichao/orgs","repos_url":"https://api.github.com/users/yuyichao/repos","events_url":"https://api.github.com/users/yuyichao/events{/privacy}","received_events_url":"https://api.github.com/users/yuyichao/received_events","type":"User","site_admin":false},"created_at":"2017-08-14T03:59:29Z","updated_at":"2017-08-14T03:59:29Z","body":"Hmmmmm, I swear I coped the nanosoldier line to my comment above but somehow it isn't there. Anyway, good that I checked.... So try again....\r\n\r\n@nanosoldier `runbenchmarks(ALL, vs=\":master\")`\r\n"}}
{"actor":{"display_login":"yuyichao"}}