{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/6285","repository_url":"https://api.github.com/repos/dotnet/coreclr","labels_url":"https://api.github.com/repos/dotnet/coreclr/issues/6285/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/6285/comments","events_url":"https://api.github.com/repos/dotnet/coreclr/issues/6285/events","html_url":"https://github.com/dotnet/coreclr/pull/6285","id":165655597,"number":6285,"title":"Propagate known array lengths to more places","user":{"login":"JosephTremoulet","id":10655216,"avatar_url":"https://avatars.githubusercontent.com/u/10655216?v=3","gravatar_id":"","url":"https://api.github.com/users/JosephTremoulet","html_url":"https://github.com/JosephTremoulet","followers_url":"https://api.github.com/users/JosephTremoulet/followers","following_url":"https://api.github.com/users/JosephTremoulet/following{/other_user}","gists_url":"https://api.github.com/users/JosephTremoulet/gists{/gist_id}","starred_url":"https://api.github.com/users/JosephTremoulet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JosephTremoulet/subscriptions","organizations_url":"https://api.github.com/users/JosephTremoulet/orgs","repos_url":"https://api.github.com/users/JosephTremoulet/repos","events_url":"https://api.github.com/users/JosephTremoulet/events{/privacy}","received_events_url":"https://api.github.com/users/JosephTremoulet/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/coreclr/labels/cla-already-signed","name":"cla-already-signed","color":"009800"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2016-07-14T20:50:00Z","updated_at":"2016-07-14T21:33:33Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/6285","html_url":"https://github.com/dotnet/coreclr/pull/6285","diff_url":"https://github.com/dotnet/coreclr/pull/6285.diff","patch_url":"https://github.com/dotnet/coreclr/pull/6285.patch"},"body":"Earlyprop limits its propagation of array lengths to blocks marked\r\nBBF_HAS_INDX, for throughput reasons.  The importer sets that flag on\r\nblocks that store/load array elements, but not blocks that simply extract\r\nan array's length.  This change renames the flag to BBF_HAS_IDX_LEN, and\r\nupdates the importer to set it also on blocks with ldlen operations.  This\r\nchange also updates fgOptWhileLoop to propagate the flag when it\r\ncopies such an expression as part of a zero-trip test.\r\n\r\nFixes #2325.\r\n\r\nThis change has ~20 diffs in corelib, none in the other core framework dlls, and ~120 more in SuperPMI.  All diffs (checked exhaustively in corelib and spot-checked elsewhere) are length loads replaced with constants or length loads feeding compares where the whole load, compare, and conditional chunk of code have been removed.\r\nThis change has no diffs in benchstones or benchmarks game; we may want to start tracking \"forceinline\" variants where we make sure the inner routines are inlined into the context where the array creations are in scope.\r\nRuns of cqNgenTP indicate throughput impact within noise range.\r\n\r\n@dotnet/jit-contrib PTAL."},"comment":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/comments/232799201","html_url":"https://github.com/dotnet/coreclr/pull/6285#issuecomment-232799201","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/6285","id":232799201,"user":{"login":"sivarv","id":11184808,"avatar_url":"https://avatars.githubusercontent.com/u/11184808?v=3","gravatar_id":"","url":"https://api.github.com/users/sivarv","html_url":"https://github.com/sivarv","followers_url":"https://api.github.com/users/sivarv/followers","following_url":"https://api.github.com/users/sivarv/following{/other_user}","gists_url":"https://api.github.com/users/sivarv/gists{/gist_id}","starred_url":"https://api.github.com/users/sivarv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sivarv/subscriptions","organizations_url":"https://api.github.com/users/sivarv/orgs","repos_url":"https://api.github.com/users/sivarv/repos","events_url":"https://api.github.com/users/sivarv/events{/privacy}","received_events_url":"https://api.github.com/users/sivarv/received_events","type":"User","site_admin":false},"created_at":"2016-07-14T21:33:33Z","updated_at":"2016-07-14T21:33:33Z","body":"Looks good."}}
{"actor":{"display_login":"sivarv"}}