{"push_id":539530966,"size":189,"distinct_size":189,"ref":"refs/heads/master","head":"4d347e886d4550d256f7ff86d23735e10c6ed201","before":"d52b63ba9befe9efd914a642ae9175257118ca77","commits":[{"sha":"db6707b28e631c7e28893afaa37640479ddaf892","author":{"email":"2e1153ecd6addcd932bf8cdd29c11fb7dd39bbb6@gmail.com","name":"Ben Harshbarger"},"message":"Remove calls to compiler warnings after we've printed out the message. No reason to generate that code.","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/db6707b28e631c7e28893afaa37640479ddaf892"},{"sha":"d447c4dda0f6885a6135db3da0c8a57ab2b83737","author":{"email":"2e1153ecd6addcd932bf8cdd29c11fb7dd39bbb6@gmail.com","name":"Ben Harshbarger"},"message":"Merge branch 'master' of github.com:chapel-lang/chapel into remove-comp-warning","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/d447c4dda0f6885a6135db3da0c8a57ab2b83737"},{"sha":"ac689b3f5f9bd21c260997d99bd16f2137cd2f77","author":{"email":"2e1153ecd6addcd932bf8cdd29c11fb7dd39bbb6@gmail.com","name":"Ben Harshbarger"},"message":"Removing debugging printf; Adding some comments","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/ac689b3f5f9bd21c260997d99bd16f2137cd2f77"},{"sha":"369eb6a04c9d050120849a1f0ea45700e9f7aeb8","author":{"email":"76b11d3d92bad7a642f7c1b15d8a810ff35b7019@users.noreply.github.com","name":"Brad Chamberlain"},"message":"Updates based on this morning's returns","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/369eb6a04c9d050120849a1f0ea45700e9f7aeb8"},{"sha":"69cfcb02e235a357a3c4c477427f722e3f029a42","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Initial attempt to optimize anonymous range iteration\n\nWhen iterating over a range such as:\n  for i in 1..10 do ...\n\nwe end up constructing a range and then getting it's low and high values out.\nThe range creation adds additional overhead that is not needed and it\nobfuscates the loop from the backend compiler (it probably can't figure out how\nthe number of iterations even though the chapel compiler knowns it at compile\ntime.)\n\nIdeally we want to generate\n  for i in 1..10\nas\n  for(i=1; i<=10; i+=1)\n\nThis removes the construction cost, and should allow the backend compiler to\noptimize/auto-vectorize better.\n\nTo accomplish this, this work replaces anonymous ranges with direct iterator\ncalls in for loops. Ranges are iterable because they have a these method. This\nreplaces the range with a direct call to an iterator. It essentially replaces\nthe code:\n  for i in 1..10\nwith:\n  for i in _opt_range_iter(1, 10)\n\nthe end result is that\n  for i in 1..10\nis now generated as:\n  int64_t i;\n  for (i = INT64(1); ((i <= INT64(10))); i += INT64(1)) {}\nwhich is exactly what we wanted\n\nThis also handles anonymous ranges whose stride is known at compile time\n\nE.G it handles\n  for i in 1..10 by 2\n\nand it will call into a more optimized iterator\n\nif the stride is not known at compile time we don't do anything because we need\nthe range iterator to use chpl__diffMod\n\nNot that this does nothing for aligned ranges, and doesn't handle cases such as\nfor i in 1..10 by 2 by 2 since it doesn't seem like a common case\n\nThe first attempt to do this was to replace the entire for loop with a c for\nloop directly, but you can't do that for zippered iterators and figuring out\nthe type of the stride is really difficult and you have to insert calls to the\noverflow checking and the general iterator.\n\nA better long term solution might be to expand scalarReplacementOfAggregates to\nincludes ranges. That would allow all ranges to be optimized, including\nnon-anonymous ranges, and ranges that are used in contexts other than direct\niteration.\n\nI still need to clean up the direct iterators, and make use of them from other\niterators. I also need to add bounds checks and the general iterator around it.","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/69cfcb02e235a357a3c4c477427f722e3f029a42"},{"sha":"2f25330985cbe4304a499483bf33e814d0f8a0e9","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Update elimination of range constructors for anonymous range iteration\n\nAdd bounds checking (kind of hacky for now) and call to general iterator if\noptimized iterators are not being used.\n\nShould replace anonymous range iteration for most simple ranges (including\nzippered)\n\nfor i in 1..10\nfor i in 1..10 by 10\nfor i in varA..varB\nfor i in varA..varB by paramA\nfor (i, j) in zip(1..10 by 2, 1..10 by paramA)\n\nIf the range is aligned, or has multiple by's applied to it or the types don't\nmatch then a non-anonymous range is created and iterated so that there don't\nhave to be a ton of versions of the _direct_range_iter.","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/2f25330985cbe4304a499483bf33e814d0f8a0e9"},{"sha":"998870aa518a4b041fae322eb44bb1d1ceeb0b3b","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Add different versions to support  arg coercion (like is done for build_range)","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/998870aa518a4b041fae322eb44bb1d1ceeb0b3b"},{"sha":"f43a38e750b8b57aacedd538e4c5b6373475b8ae","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Swap the order of the iterators to separate them in a more logical manner\n\nAlso adds an all int param version of the iterator because it produces the\ncleanest loops.\n\ne.g. 'for i in 1..10' turns into 'for (i=1; i<=10; i+=1)' with no temp\nvariables","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/f43a38e750b8b57aacedd538e4c5b6373475b8ae"},{"sha":"b448227f327645794326c75785bb77154ad527a5","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Fix general iterator","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/b448227f327645794326c75785bb77154ad527a5"},{"sha":"e0b713932c6d59ef62e390a91e1c80d6328ce43f","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Comment out all param iter and add TODOS","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/e0b713932c6d59ef62e390a91e1c80d6328ce43f"},{"sha":"54b6213372340e8a3d82f1b16d88f46f2fe7d564","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Strengthen check for bounded iterator and add zippered iter check\n\nNeed to be sure this optimization only fires for bounded iterators. Currently\nit fired for bounded and unbounded. The check to do so should be strengthened\nmore. Also when looking at the iteratorExpr we looked for a tuple so that we\ncould replace ranges in a zippered iterator. However, this also fired for non\nzippered iterators over tuples, which we didn't want to do.","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/54b6213372340e8a3d82f1b16d88f46f2fe7d564"},{"sha":"22c981a7431ab60abc4988d9c834dc674697f05b","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Update range overflow detection for direct range iterators\n\nInstead of creating a range to perform the overflow check, directly perform it\nwith a helper function that the original range overflow check now uses.","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/22c981a7431ab60abc4988d9c834dc674697f05b"},{"sha":"e348d3f4a1a44bf76e9674f95244e3661e9b4608","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Add checks for bad strides","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/e348d3f4a1a44bf76e9674f95244e3661e9b4608"},{"sha":"ef8064612b0e6b78b59baaa473fddb2ce7a814f8","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"make iters smaller by removing braces and using do loops","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/ef8064612b0e6b78b59baaa473fddb2ce7a814f8"},{"sha":"236b897f9d9071363e0c08d6d5b7cce8202400e4","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"make iters smaller by removing braces and using do loops","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/236b897f9d9071363e0c08d6d5b7cce8202400e4"},{"sha":"354ec7a8e32fa9b7d3a0725b659f2baa9d0b0e91","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"update comments, convert start=>low and end=>high","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/354ec7a8e32fa9b7d3a0725b659f2baa9d0b0e91"},{"sha":"3359b286c7ff684a5f149393ca726762b0896edf","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Add some more comments and clean up existing ones","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/3359b286c7ff684a5f149393ca726762b0896edf"},{"sha":"27f5a5bcf5b7066c6314acdccd1e7c4ac304a5aa","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Update to use chpl_build_bounded_range","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/27f5a5bcf5b7066c6314acdccd1e7c4ac304a5aa"},{"sha":"e32d67e596813b60472453d3a52cdc237929bac6","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Update brace style to match existing ones in ForLoop.cpp","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/e32d67e596813b60472453d3a52cdc237929bac6"},{"sha":"2cc65ce5f1ea73f0fab4212d3bbdd31388105e3d","author":{"email":"a0eed57aaedf007a763cbac2dd65f90f9fe7ec18@gmail.com","name":"Elliot Ronaghan"},"message":"Remove all param version\n\nThe all param version existed to make the cleanest loops, but it wasn't really\nneeded. Removing it because the code bloat in the modules doesn't seem worth\nslightly cleaner generated code.\n\nWith the all param version things like:\n  for i in 1..10\nwould turn into:\n  for (i=1; i<=10; i+=1)\nNow they will turn into:\n  int high=10; for (i=1; i<=high; i+=1)\n\nI'll take a look post commit if there's something that can be done to improve\ncopy propagation so it can achieve the same thing.","distinct":true,"url":"https://api.github.com/repos/daviditen/chapel/commits/2cc65ce5f1ea73f0fab4212d3bbdd31388105e3d"}]}