)]}'
{
  "commit": "9ed48bae7a2ff600712a0b8672f2b7d5f33b453b",
  "tree": "f5edd7e2194a0f35801d8084fd1bedb3a4dfb000",
  "parents": [
    "f34d1ace76a7e384685ebc5395141295cf1c618f"
  ],
  "author": {
    "name": "Nicolas Capens",
    "email": "capn@google.com",
    "time": "Thu May 11 11:25:00 2017 -0400"
  },
  "committer": {
    "name": "Nicolas Capens",
    "email": "capn@google.com",
    "time": "Thu May 11 17:51:48 2017 +0000"
  },
  "message": "Prevent LTO from eliminating cross-library virtual methods.\n\nlibEGL has to call virtual methods on objects created withing libGLESv2,\nand vice-versa. Clang\u0027s aggressive link-time-optimization considers\ncalls to these methods unreachable, because they\u0027re not defined within\nthe same linkage unit. So when they do get called, we\u0027re hitting UD\ninstructions. It can be fixed by marking these classes with\n[[clang::lto_visibility_public]] attributes:\nhttps://clang.llvm.org/docs/LTOVisibility.html\n\nBug chromium:720933\n\nChange-Id: I87f9b09921a1b2d443121efcdb5525ff4cb5797b\nReviewed-on: https://swiftshader-review.googlesource.com/9688\nTested-by: Nicolas Capens \u003ccapn@google.com\u003e\nReviewed-by: Nicolas Capens \u003ccapn@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b13c4f7b6d5fba534baf1e8462273d16d60b7f47",
      "old_mode": 33188,
      "old_path": "src/Common/BUILD.gn",
      "new_id": "2fd48857e5e3077c7eefeb618b0925534e5af5bf",
      "new_mode": 33188,
      "new_path": "src/Common/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "23105e6f2b27f3209aeab04804f0ef9433959f80",
      "old_mode": 33188,
      "old_path": "src/Main/BUILD.gn",
      "new_id": "150d559652a804647963d41074000eda92253b0b",
      "new_mode": 33188,
      "new_path": "src/Main/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "a888c86d2417fed493ff74abc910e107eb9f5697",
      "old_mode": 33188,
      "old_path": "src/Main/FrameBuffer.hpp",
      "new_id": "10ef6bc94d500c1aaaa29c08b93743ee2338b9f7",
      "new_mode": 33188,
      "new_path": "src/Main/FrameBuffer.hpp"
    },
    {
      "type": "modify",
      "old_id": "03acd48f190ebb7e4c63b8a656db740545e8b3fe",
      "old_mode": 33188,
      "old_path": "src/OpenGL/common/BUILD.gn",
      "new_id": "cb58ab8e2f7ef30a0d2326324df89cdfa5b4d77f",
      "new_mode": 33188,
      "new_path": "src/OpenGL/common/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "c3ce604f7fed83c0a915a671eea8dc7ecbe45c52",
      "old_mode": 33188,
      "old_path": "src/OpenGL/common/Image.hpp",
      "new_id": "63375b0f03b8b9d046ddc2e57a7d9357cd1a0df6",
      "new_mode": 33188,
      "new_path": "src/OpenGL/common/Image.hpp"
    },
    {
      "type": "modify",
      "old_id": "c9584e143e5bcbe32c1e749e551a9c96c2f168a5",
      "old_mode": 33188,
      "old_path": "src/OpenGL/common/Object.hpp",
      "new_id": "c6243ac40763fc9c2b46d9f3fb9016eecc4e0d96",
      "new_mode": 33188,
      "new_path": "src/OpenGL/common/Object.hpp"
    },
    {
      "type": "modify",
      "old_id": "0a85bbe2a3fc889d021ca85d74d165700cd54f3b",
      "old_mode": 33188,
      "old_path": "src/OpenGL/compiler/BUILD.gn",
      "new_id": "5da939046dea5101ea9110a335cb9de93c901e3b",
      "new_mode": 33188,
      "new_path": "src/OpenGL/compiler/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "fa47d12109a78b6fa17074e0ebbb5b4f55f98924",
      "old_mode": 33188,
      "old_path": "src/OpenGL/compiler/Compiler.vcxproj",
      "new_id": "58a0e5ad87ad12041858fe370555643ab25a941c",
      "new_mode": 33188,
      "new_path": "src/OpenGL/compiler/Compiler.vcxproj"
    },
    {
      "type": "modify",
      "old_id": "bcfbdc00c2e7a5c88ec69c58371ae188005cc612",
      "old_mode": 33188,
      "old_path": "src/OpenGL/libEGL/BUILD.gn",
      "new_id": "62860703b9ba6ec9544399c88f6cf8d68d9f1877",
      "new_mode": 33188,
      "new_path": "src/OpenGL/libEGL/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "182516e3fe255923a3941992af98fd8ae637b90a",
      "old_mode": 33188,
      "old_path": "src/OpenGL/libEGL/Context.hpp",
      "new_id": "da3246c38e64ab7a4fe029a8bf4c1b579897aa26",
      "new_mode": 33188,
      "new_path": "src/OpenGL/libEGL/Context.hpp"
    },
    {
      "type": "modify",
      "old_id": "7677c6c875f1eef9e145c03b776ea2e378c77b69",
      "old_mode": 33188,
      "old_path": "src/OpenGL/libEGL/Display.h",
      "new_id": "3fba9e77baf3c60b94010904dec71c52bfc4aa3e",
      "new_mode": 33188,
      "new_path": "src/OpenGL/libEGL/Display.h"
    },
    {
      "type": "modify",
      "old_id": "555520e521fe8d7594f00f116214b42c267b9523",
      "old_mode": 33188,
      "old_path": "src/OpenGL/libEGL/EGLSurface.h",
      "new_id": "3ebc2e4b0d76d6b3081b6a5d05bf2c7b4ff79161",
      "new_mode": 33188,
      "new_path": "src/OpenGL/libEGL/EGLSurface.h"
    },
    {
      "type": "modify",
      "old_id": "0c0cbaac0410bd65c999a97b8871e04f679d80d0",
      "old_mode": 33188,
      "old_path": "src/OpenGL/libEGL/libEGL.vcxproj",
      "new_id": "795d598818d9627a020d1e24dd117893fe33a5b9",
      "new_mode": 33188,
      "new_path": "src/OpenGL/libEGL/libEGL.vcxproj"
    },
    {
      "type": "modify",
      "old_id": "46a9bfe8f581f9cc06001180e7c748704cc54bd5",
      "old_mode": 33188,
      "old_path": "src/OpenGL/libGLESv2/BUILD.gn",
      "new_id": "59f4f6d86997df764a1cc424775733f3d3e73b97",
      "new_mode": 33188,
      "new_path": "src/OpenGL/libGLESv2/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "3a7431a5713fed894dbe37c4bb82572f4bf68a91",
      "old_mode": 33188,
      "old_path": "src/OpenGL/libGLESv2/Context.h",
      "new_id": "a6c6e71225afdf621c5fefcf8befc82ee8fd8bf6",
      "new_mode": 33188,
      "new_path": "src/OpenGL/libGLESv2/Context.h"
    },
    {
      "type": "modify",
      "old_id": "767c43e5a995da0c96887649ec9f4416bb1fd807",
      "old_mode": 33188,
      "old_path": "src/OpenGL/libGLESv2/libGLESv2.vcxproj",
      "new_id": "5750080e2ff2c74d768a356e66d77618158d6206",
      "new_mode": 33188,
      "new_path": "src/OpenGL/libGLESv2/libGLESv2.vcxproj"
    },
    {
      "type": "modify",
      "old_id": "d53efc460f5a2ee3a680ade5a3c7c424c08c5523",
      "old_mode": 33188,
      "old_path": "src/Renderer/BUILD.gn",
      "new_id": "301b106ba4fd9b2881dfe47b60efe27eeff7ff1f",
      "new_mode": 33188,
      "new_path": "src/Renderer/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "4268a3a40b8fc10392ffb06ab46b53af526affac",
      "old_mode": 33188,
      "old_path": "src/Renderer/Surface.hpp",
      "new_id": "fa043936839e5c7f9650e24bb64478c86cd53b3b",
      "new_mode": 33188,
      "new_path": "src/Renderer/Surface.hpp"
    },
    {
      "type": "modify",
      "old_id": "9482ef6e851b4f545c2410897e68331126733306",
      "old_mode": 33188,
      "old_path": "src/Shader/BUILD.gn",
      "new_id": "d1323f769316408fc5e3f915a9cfce7db24f98e7",
      "new_mode": 33188,
      "new_path": "src/Shader/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "26062f1ba1097294fced752b82efa2039293f114",
      "old_mode": 33188,
      "old_path": "src/SwiftShader/SwiftShader.vcxproj",
      "new_id": "1ab5865fa718bc297fde3d7f6b1f1766e2003478",
      "new_mode": 33188,
      "new_path": "src/SwiftShader/SwiftShader.vcxproj"
    }
  ]
}
