)]}'
{
  "commit": "a9dc7707d6106b329ed68a5175b3152db28cf6c8",
  "tree": "48817efbab6b48e390927ca7e06d615c91921c6a",
  "parents": [
    "8b6938547b698ff9d9cbaf131767d67e5f190472"
  ],
  "author": {
    "name": "Sean Risser",
    "email": "srisser@google.com",
    "time": "Thu Sep 26 15:36:49 2019 -0400"
  },
  "committer": {
    "name": "Sean Risser",
    "email": "srisser@google.com",
    "time": "Mon Sep 30 18:25:13 2019 +0000"
  },
  "message": "Optimize \"max(t, t)\" to fold into just \"t\"\n\nThis masks a crash related to nested, unconditional continue statements.\nThose constructs are known to be buggy, but we have elected to not fix\nthem at this point in time because the SWANGLE project will deprecate\nall of Swiftshader\u0027s GLES backend.\n\nIt\u0027s unlikely that the remaining bug will effect many end-users as it\nrelies on bizarre control flow.\n\nFor logging purposes here is the shader code that reproduces an infinite\nloop:\n\n    void foo() { }\n\n    void main() {\n\tfor (int i \u003d 0; i \u003c 4; i++) {\n\t    continue;\n\t    for (int k \u003d 0; k \u003c 4; k++)\n\t\tcontinue;\n\t    foo();\n\t}\n    }\n\nI\u0027m not adding this as a unit test since we aren\u0027t fixing our compiler.\n\nBug chromium:997283\n\nChange-Id: Id31d70c4cd70a16fd20b7ebed18a82d5f8a705ba\nReviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/36708\nTested-by: Sean Risser \u003csrisser@google.com\u003e\nKokoro-Presubmit: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Alexis Hétu \u003csugoi@google.com\u003e\nReviewed-by: Nicolas Capens \u003cnicolascapens@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b46a36f66b73ae8f0c039e5eb83a9608ac7e88ed",
      "old_mode": 33188,
      "old_path": "src/OpenGL/compiler/ParseHelper.cpp",
      "new_id": "2bee48e37839946eb1e03e2cb203b7a06ee915b3",
      "new_mode": 33188,
      "new_path": "src/OpenGL/compiler/ParseHelper.cpp"
    }
  ]
}
