)]}'
{
  "log": [
    {
      "commit": "fa76296bc624bc2c879167c260ad6925238efb3d",
      "tree": "045c4488fec66806982a62aa4cfd7d3a2183e958",
      "parents": [
        "6f005931d0a0db65128db803df38d59d205dd218"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Apr 07 11:33:37 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Apr 07 23:03:42 2017 +0000"
      },
      "message": "Fixed missing context while detecting unit strides.\n\nWith regression test (found by fuzz testing).\n\nBug: 37033123\nTest: test-art-target\nChange-Id: Id738b2a3a353985c3d0bf3beeb581a31f1fcbc3f\n"
    },
    {
      "commit": "8e02e3e77ff8ac7a80e25689750b4d329593e12a",
      "tree": "f8201a2def0d3f9c05b05ddcb8ab338f84169ab7",
      "parents": [
        "e0aa5beef7419b8c9ab5d3dc93553ef2b30d126c"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Feb 28 14:41:55 2017 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Mar 01 11:14:05 2017 -0800"
      },
      "message": "New utilities for induction variables.\n\nRationale:\nBreak-out CL of ART Vectorizer: 2 OF many.\nThe purpose is making the original CL smaller\nand easier to review.\n\nBug: 34083438\nTest: test-art-host\nChange-Id: I46d297eba504af3850a5998ee279ea9f7b38bed8\n"
    },
    {
      "commit": "e761bccf9f0d884cc4d4ec104568cef968296492",
      "tree": "05a2d20d61c0e91270df2747f0c242433b5ce62b",
      "parents": [
        "b0355130e38034db6b904783a00f74a3524e1881"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 08:59:37 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 09:32:17 2017 +0000"
      },
      "message": "Revert \"Revert \"Load the array class in the compiler for allocations.\"\"\n\nThis reverts commit fee255039e30c1c3dfc70c426c3d176221c3cdf9.\n\nChange-Id: I02b45f9a659d872feeb35df40b42c1be9878413a\n"
    },
    {
      "commit": "fee255039e30c1c3dfc70c426c3d176221c3cdf9",
      "tree": "8207b72cc76513fed9f7b3c01aaa32cd54a87f1c",
      "parents": [
        "cc99df230feb46ba717252f002d0cc2da6828421"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 19 02:11:15 2017 +0000"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 19 02:11:15 2017 +0000"
      },
      "message": "Revert \"Load the array class in the compiler for allocations.\"\n\nlibcore test fails.\n\nThis reverts commit cc99df230feb46ba717252f002d0cc2da6828421.\n\nChange-Id: I5bac595acd2b240886062e8c1f11f9095ff6a9ed\n"
    },
    {
      "commit": "cc99df230feb46ba717252f002d0cc2da6828421",
      "tree": "73ac045673e150fa367a8da4d46874f28e928491",
      "parents": [
        "4507fdcb70bd570d5f3968061bf991f0a1233a93"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 17 23:00:24 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 18 15:16:32 2017 +0000"
      },
      "message": "Load the array class in the compiler for allocations.\n\nRemoving one other dependency for needing to pass\nthe current method, and having dex_cache_resolved_types_\nin ArtMethod.\n\noat file increase:\n- x64: 0.25%\n- arm32: 0.30%\n- x86: 0.28%\n\ntest: test-art-host, test-art-target\nChange-Id: Ibca4fa00d3e31954db2ccb1f65a584b8c67cb230\n"
    },
    {
      "commit": "df7822ecf033cecf48d950f3ae34f7043c8df738",
      "tree": "f392a69377e1e281bcd85d811b656c6d14280ab4",
      "parents": [
        "6746874b84a44ab8dff18457eec546a1ebb22e93"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Dec 06 10:05:30 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Dec 09 08:42:18 2016 -0800"
      },
      "message": "Added polynomial induction variables analysis. With tests.\n\nRationale:\nInformation on polynomial sequences is nice to further enhance\nBCE and last-value assignment. In this case, this CL enables more\nloop optimizations for benchpress\u0027 Sum (80 x speedup). Also\nchanged rem-based geometric induction to wrap-around induction.\n\nTest: test-art-host\n\nChange-Id: Ie4d2659edefb814edda2c971c1f70ba400c31111\n"
    },
    {
      "commit": "c071a01a26013ab6e3dbfc4131efa95a65aeb4ed",
      "tree": "bbe75527b8ee94483e4d797c6b2372adaabd81cf",
      "parents": [
        "5eb1e1e7341f4e7febf77c04f8649a9566b31c03"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Dec 01 10:22:31 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Dec 05 16:16:42 2016 -0800"
      },
      "message": "Added geometric induction variables analysis.\n\nRationale:\nInformation on geometric and polynomial (coming soon) sequences\nare nice to have to further enhance BCE and last-value assignment.\n\nTest: test-art-host\nChange-Id: Ib5e2998c3eb1009def6fd00b82935da7c3ba7c6e\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "16d3a65a25f03a7e447cafc7ab8fbdb52807cae6",
      "tree": "cb22e0f7109b75dee3df0eb57939eb2a5004d854",
      "parents": [
        "32772cbdbcb35f5475b01f31314a3c7289bdb589"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Sep 09 10:33:50 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Sep 15 08:59:36 2016 -0700"
      },
      "message": "Added ability to generate last-value of linear induction.\nAlso added utility to update fetches in induction nodes.\n\nRationale:\nThis is a first step towards the larger CL that introduces\na new loop optimization framework in the optimizing compiler\n(see https://android-review.googlesource.com/#/c/271392/3).\n\nChange-Id: Ibecd674c8146d9665340e68718c498555646129a\nTests: induction_var_range_test\n"
    },
    {
      "commit": "52be7e759acecc3841dca0ac1b703034d8cad60d",
      "tree": "c6ed5e85c33d8938dbbe2b7ca5ecf7e00292884c",
      "parents": [
        "4dd9d82d6c1260b3da908a0d1a22b7d209b87496"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jun 23 11:20:41 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 29 09:34:28 2016 -0700"
      },
      "message": "Improvements in induction range analysis.\n\nRationale:\nUses range analysis while determining whether trip-counts\nare \"safe\", which improves analysis of triangular loops.\nAlso implements more effective triangular loop analysis\nby evaluating induction information only once and using\na top level hint (instead of the \"iterative refinement\"\nthat was used earlier). Also fixes analysis of triangular\ntrip counts that may wrap-around. All with tests.\n\nTest: see induction_var_range_test/530-checker-loops*\n\nBUG\u003d27151190\n\nChange-Id: I1877c8ce0c9a52005900eb9dfdbb1918df100278\n"
    },
    {
      "commit": "0d345cf8db01f40db250f80de5104e0df24234fa",
      "tree": "ebeac7adff399e908e5dcd3c855505ed02fe72b8",
      "parents": [
        "4485c6964ad414d5c6d0535622cfad1c0a6b640f"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Mar 16 10:49:38 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Mar 21 12:53:33 2016 -0700"
      },
      "message": "Generalize induction and range analysis across type conversions.\n\nRationale:\nThis changelist implements allowing narrowing conversions within\ninductions and loop control. More induction and loops recognized,\nmore bounds eliminated. We all win. The basic idea is pretty simple\n(record type with detected induction) but one has to get all the\ndetails right, as illustrated by the many new unit tests.\n\nBUG\u003d27151098\n\nChange-Id: I254020bfa5fa623799b31bbbb5ccc97d4d5a0100\n"
    },
    {
      "commit": "97412c92afb3f6630c4f0eafe6d6161862bfb4c1",
      "tree": "124411d0160da1a7f0869c29029ef4dbfac6da97",
      "parents": [
        "b4982aab07ae4cdaba13b4cb99306459d92e52d5"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Feb 19 20:14:38 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Feb 24 11:08:32 2016 -0800"
      },
      "message": "Use range analysis for better trip count analysis\n\nRationale:\nMarking more loops as always-taken avoids generating\nunnecessary new top tests while marking more loops\nare non-infinite enables more optimizations. This\nCL helps with these improvements. Also, some more\ncode is shared between induction and range analysis\nand a bug with refining ranges has been fixed.\n\nBug: 27151190\n\nChange-Id: Iecc0d7f32ae4779ee5424cda9dcc20816220935e\n"
    },
    {
      "commit": "badd826664896d4a9628a5a89b78016894aa414b",
      "tree": "a30e8b3e62126ae1e1df1152ac643cfc5f2b074a",
      "parents": [
        "47a2a45a6673ddf3322115ff5058763f82a9368f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 02 16:28:56 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 15 10:21:07 2016 +0000"
      },
      "message": "ART: Run SsaBuilder from HGraphBuilder\n\nFirst step towards merging the two passes, which will later result in\nHGraphBuilder directly producing SSA form. This CL mostly just updates\ntests broken by not being able to inspect the pre-SSA form.\n\nUsing HLocals outside the HGraphBuilder is now deprecated.\n\nBug: 27150508\nChange-Id: I00fb6050580f409dcc5aa5b5aa3a536d6e8d759e\n"
    },
    {
      "commit": "4833f5a1990c76bc2be89504225fb13cca22bedf",
      "tree": "8e096f222368f30bf821b154bc78bac12d5cd2e5",
      "parents": [
        "bb41b250153308ef51664d7a6cc26c6a2e588fb7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 16 10:37:39 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Dec 31 09:58:33 2015 +0000"
      },
      "message": "ART: Refactor SsaBuilder for more precise typing info\n\nThis reverts commit 68289a531484d26214e09f1eadd9833531a3bc3c.\n\nNow uses Primitive::Is64BitType instead of Primitive::ComponentSize\nbecause it was incorrectly optimized by GCC.\n\nBug: 26208284\nBug: 24252151\nBug: 24252100\nBug: 22538329\nBug: 25786318\n\nChange-Id: Ib39f3da2b92bc5be5d76f4240a77567d82c6bebe\n"
    },
    {
      "commit": "68289a531484d26214e09f1eadd9833531a3bc3c",
      "tree": "6f87852b9d14e479ea2c7ef92de35c3118a0fd1e",
      "parents": [
        "bc90a0538e56f98b8e138cb622e6b9d834244ad9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 15 17:30:30 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 15 17:40:08 2015 -0800"
      },
      "message": "Revert \"ART: Refactor SsaBuilder for more precise typing info\"\n\nThis reverts commit d9510dfc32349eeb4f2145c801f7ba1d5bccfb12.\n\nBug: 26208284\n\nBug: 24252151\nBug: 24252100\nBug: 22538329\nBug: 25786318\n\nChange-Id: I5f491becdf076ff51d437d490405ec4e1586c010\n"
    },
    {
      "commit": "7d57d7f2f0328241ff07c43a93edadbc1a6697c6",
      "tree": "4a53eb14db06af2e8fc84bbebd48a462e868bfd4",
      "parents": [
        "7d5a577c1f256a7703361afb071dcd4ecc7d275f"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Dec 09 14:39:48 2015 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Dec 15 11:56:35 2015 -0800"
      },
      "message": "Various induction/range analysis improvements.\n\nRationale: this change list improves analysis of triangular loops\n           both by changing loop order for induction analysis\n           (enabling range analysis in inner loops) and by\n           some symbolic improvements during range analysis;\n           also, a mul/div bug has been fixed (with pass/fail\n           unit tests); lastly this change list prepares some\n           follow up optimizations.\n\nChange-Id: I84a03e848405009541c3fa8e3d3c2f430e100087\n"
    },
    {
      "commit": "d9510dfc32349eeb4f2145c801f7ba1d5bccfb12",
      "tree": "9f4e4ffb5fae25c4f14059fd1d772726e9d96170",
      "parents": [
        "ceec5a3c81925cf80a18954b2e585316450c575c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Nov 04 23:30:22 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 14 13:03:19 2015 +0000"
      },
      "message": "ART: Refactor SsaBuilder for more precise typing info\n\nThis patch refactors the SsaBuilder to do the following:\n\n1) All phis are constructed live and marked dead if not used or proved\nto be conflicting.\n\n2) Primitive type propagation, now not a separate pass, identifies\nconflicting types and marks corresponding phis dead.\n\n3) When compiling --debuggable, DeadPhiHandling used to revive phis\nwhich had only environmental uses but did not attempt to resolve\nconflicts. This pass was removed as obsolete and is now superseded\nby primitive type propagation (identifying conflicting phis) and\nSsaDeadPhiEliminiation (keeping phis live if debuggable + env use).\n\n4) Resolving conflicts requires correct primitive type information\non all instructions. This was not the case for ArrayGet instructions\nwhich can have ambiguous types in the bytecode. To this end,\nSsaBuilder now runs reference type propagation and types ArrayGets\nfrom the type of the input array.\n\n5) With RTP being run inside the SsaBuilder, it is not necessary to\nrun it as a separate optimization pass. Optimizations can now assume\nthat all instructions of type kPrimNot have reference type info after\nSsaBuilder (with the exception of NullConstant).\n\n6) Graph now contains a reference type to be assigned to NullConstant.\nAll reference type instructions therefore have RTI, as now enforced\nby the SsaChecker.\n\nBug: 24252151\nBug: 24252100\nBug: 22538329\nBug: 25786318\n\nChange-Id: I7a3aee1ff66c82d64b4846611c547af17e91d260\n"
    },
    {
      "commit": "b738d4f477a9b6f4c4f69153f9077f1559d2bca1",
      "tree": "53c1100c03c33039e910e0e97ca4ef73d69bb15f",
      "parents": [
        "68cebffee2f44f0345bd7be7e4cbad0f10e64082"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Dec 03 11:23:35 2015 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Dec 03 16:42:17 2015 -0800"
      },
      "message": "Step-wise improvement of range analysis with outer loop induction.\n\nRationale: Using a step-wise approach (rather than expanding all ranges\n           at once) increases the opportunities for statically removing\n           bound checks, as demonstrated by the new checker tests.\n\nChange-Id: Icbfd9406523a069e1fb7508546ea94f896e5a255\n"
    },
    {
      "commit": "db51efb3617d15f1cd9e5ff0cc2d934777014e9a",
      "tree": "fa70acb9f8d090def2cae550db8c2e1f630f31c4",
      "parents": [
        "2649cba0fb7cdbd8fa60cb4f2fb320fb2b18ee37"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 06 01:36:20 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Nov 09 10:27:08 2015 +0000"
      },
      "message": "ART: Fix critical edge splitting under try/catch\n\nA critical edge would not be split if the predecessor ends with\nTryBoundary. This would eventually trip liveness analysis because\na back edge block would have smaller liveness position than a nested\nloop.\n\nAnother implication of this change is that an edge between a loop\u0027s\npre-header ending with TryBoundary and the header will be split,\nguaranteeing that a pre-header always has just one successor.\n\nBug: 25493695\nBug: 25454012\nChange-Id: I5a13b8bb74509b48f5d628906f7158af007f99ae\n"
    },
    {
      "commit": "389b3dbf5c5390056ff4dacac464219853dd3cda",
      "tree": "85013c1eaf6aaba9ab839f17b978eb689f30e998",
      "parents": [
        "c8894ab5021aecd0fa5eba94af47f732914af33b"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Oct 28 14:23:40 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Nov 04 09:48:26 2015 -0800"
      },
      "message": "Finalized all components of range analysis needed for dynamic bce.\n\nRationale: added ability to generate taken-test, prompt back need\n           for finite-test; cleaned up the API now that bounds\n           check needs are all known.\n\nChange-Id: I3d09b249965d1a980c09381240de175ca4b2e455\n"
    },
    {
      "commit": "22f058726d35dd8f40b3763649e61740b3d22535",
      "tree": "987dd5df7627c2c3e8c798089083cb797627daed",
      "parents": [
        "3dca4c04170bb4c7b26609e55f3f4966d46b681a"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Oct 27 15:56:28 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Oct 28 13:57:14 2015 -0700"
      },
      "message": "Generate taken-test during trip-count analysis.\n\nRationale: for loops that may not be taken, this taken-test\n           can be used by clients of the induction variable\n           analysis to ensure trip-count evaluation is valid.\n\nChange-Id: Ia64749e2389b7224e69d6a49bb604b1964c11068\n"
    },
    {
      "commit": "27cfad0d14669ea00333f74bbde9ad923fee70ff",
      "tree": "385620303715298c4f3f73d4e64ac96f6e99e59d",
      "parents": [
        "7cf979b02fa0f2546f3f1b648487ac8df359acf7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 20 11:29:36 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 20 11:32:02 2015 +0100"
      },
      "message": "Fix induction_var_range_test.\n\nChange-Id: I43101c5e35f4c516ea4ba3137631508f12703412\n"
    },
    {
      "commit": "aec3cce52009afe436a6db0280d6d5aee9b8d4d4",
      "tree": "9fa409750d89871863b10396a2278ebd48f0b5b9",
      "parents": [
        "f69f56e7d4a1e31dfce2a77558c9b7047f82092b"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Oct 14 17:44:55 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Oct 19 12:44:55 2015 -0700"
      },
      "message": "Added ability to generate induction range code.\n\nRationale: used by dynamic BCE (done in another CL).\n\nChange-Id: Ia6ce75da57b5298fba74622822ae0bae69c74188\n"
    },
    {
      "commit": "9401f5397128ddc8dc36de923dd5e6bd4e4b5be4",
      "tree": "4ff8052307da80baa89dfa80a446f48752c0e95c",
      "parents": [
        "931e26843bbb688eacfa67b40414c6b8f221a56a"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Sep 28 16:25:56 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Sep 30 09:58:53 2015 -0700"
      },
      "message": "Implemented trip-count safety information.\n\nAs shown in the induction analysis presentation, trip-counts need to\ndeal with potential taken/not-taken situations (so that trip-count\nis either valid in the full loop or just in the loop-body proper)\nand potential finite/infinite situations (the latter can still be\nanalyzed but may need to run-time test later to guard against the\ninfinite conditions). This CL provides that information.\n\nChange-Id: I0445d8e836b80a3614af217ce3e39d766e77b986\n"
    },
    {
      "commit": "cd26feb7e9f9eb36af9453f3cdb55cfc4e6e5ec4",
      "tree": "39768556d365d9830119f03aae81de1e7ee3efd3",
      "parents": [
        "a6cfe5a3acb3af782322fde734bfcf0c524d6f99"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Sep 23 17:50:50 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Sep 23 18:36:11 2015 -0700"
      },
      "message": "Minor cleanup in range analysis.\n\n(1) replaced min/max macro as previously required.\n(2) removed some redundant code by merging min/max into one.\n\nChange-Id: I610879a06d550346bfac7e6e12ec0299ba226a37\n"
    },
    {
      "commit": "b3365e0c4cda4f8f19284d2d418db158ab78d810",
      "tree": "d76a5ee48912d7fae2c5e612def63000c8284f8a",
      "parents": [
        "6a6916b378c413c2692782e901393607c47f0005"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Sep 21 14:45:05 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Sep 22 16:22:32 2015 +0000"
      },
      "message": "Various improvements in range analysis.\n\nRationale:\nUsing min/max values for \"unknowns\" is a bit wasteful,\nsince it eliminates two useful values. Replaced this\nwith additional boolean to make cases more accurate.\nAdded few cases to handle examples found in real-life.\n\nChange-Id: I211f8d9a28b1ae79abdb55fb4569716f21d8043b\n"
    },
    {
      "commit": "d14c59564870c910bdc823081f0ed1101f599231",
      "tree": "36a831f8c786823129bebbf03a4ca48ff6ed3c23",
      "parents": [
        "e6576390f957c82c2aede438834d028066757368"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Sep 08 15:25:15 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Sep 10 10:16:04 2015 -0700"
      },
      "message": "Induction variable range analysis.\n\nRationale: by computing an upper bound on the trip count of each\n           loop after induction var analysis has completed, a\n\t   simple range analysis yields lower and upper bounds on\n\t   all induced expressions in a loop; this analysis\n\t   plugs directly into BCE (follow-up CL).\n\nChange-Id: I46a3fe48721ca372547199b39a3498c47992597d\n"
    }
  ]
}
