{"action":"created","issue":{"url":"https://api.github.com/repos/SDC-Developers/SDC/issues/12","repository_url":"https://api.github.com/repos/SDC-Developers/SDC","labels_url":"https://api.github.com/repos/SDC-Developers/SDC/issues/12/labels{/name}","comments_url":"https://api.github.com/repos/SDC-Developers/SDC/issues/12/comments","events_url":"https://api.github.com/repos/SDC-Developers/SDC/issues/12/events","html_url":"https://github.com/SDC-Developers/SDC/issues/12","id":1045914,"number":12,"title":"Value range propagation. ","user":{"login":"bhelyer","id":24411,"avatar_url":"https://avatars.githubusercontent.com/u/24411?v=3","gravatar_id":"","url":"https://api.github.com/users/bhelyer","html_url":"https://github.com/bhelyer","followers_url":"https://api.github.com/users/bhelyer/followers","following_url":"https://api.github.com/users/bhelyer/following{/other_user}","gists_url":"https://api.github.com/users/bhelyer/gists{/gist_id}","starred_url":"https://api.github.com/users/bhelyer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bhelyer/subscriptions","organizations_url":"https://api.github.com/users/bhelyer/orgs","repos_url":"https://api.github.com/users/bhelyer/repos","events_url":"https://api.github.com/users/bhelyer/events{/privacy}","received_events_url":"https://api.github.com/users/bhelyer/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/SDC-Developers/SDC/labels/severity-minor","name":"severity-minor","color":"DDDDDD"},{"url":"https://api.github.com/repos/SDC-Developers/SDC/labels/we-require-additional-features","name":"we-require-additional-features","color":"02e10c"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2011-06-12T15:48:34Z","updated_at":"2016-02-17T06:18:44Z","closed_at":null,"body":""},"comment":{"url":"https://api.github.com/repos/SDC-Developers/SDC/issues/comments/185044718","html_url":"https://github.com/SDC-Developers/SDC/issues/12#issuecomment-185044718","issue_url":"https://api.github.com/repos/SDC-Developers/SDC/issues/12","id":185044718,"user":{"login":"deadalnix","id":854121,"avatar_url":"https://avatars.githubusercontent.com/u/854121?v=3","gravatar_id":"","url":"https://api.github.com/users/deadalnix","html_url":"https://github.com/deadalnix","followers_url":"https://api.github.com/users/deadalnix/followers","following_url":"https://api.github.com/users/deadalnix/following{/other_user}","gists_url":"https://api.github.com/users/deadalnix/gists{/gist_id}","starred_url":"https://api.github.com/users/deadalnix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deadalnix/subscriptions","organizations_url":"https://api.github.com/users/deadalnix/orgs","repos_url":"https://api.github.com/users/deadalnix/repos","events_url":"https://api.github.com/users/deadalnix/events{/privacy}","received_events_url":"https://api.github.com/users/deadalnix/received_events","type":"User","site_admin":false},"created_at":"2016-02-17T06:18:44Z","updated_at":"2016-02-17T06:18:44Z","body":"I'm not sure what you mean. VRP is used when casting from an integral type to a smaller integral type. It is allowed in D if VRP can prove it is safe. It is called from caster.d as a fallback when regular integral cast fails.\r\n\r\nvrp.d is very ad hoc right now, and could win from some improvement.\r\n\r\nVRP here doesn't need to take into account flow analysis (that would make the front too slow) and is just exploring the expression tree and gathering possible value ranges.\r\n\r\nVRP is also used by the optimizer, and take flow analysis into account, but this is the optimizer's job and is done by LLVM, not the frontend."}}