)]}'
{
  "commit": "43fcd32b4faefdd5dd7cece1d87e43939cc1f360",
  "tree": "c74d4036841aeae35a602c3f0f39201e2091ab0d",
  "parents": [
    "50066a3edffa96879ad1545a8e61c009c86c6e71"
  ],
  "author": {
    "name": "Reid Kleckner",
    "email": "rnk@google.com",
    "time": "Thu Sep 10 11:23:42 2020 -0700"
  },
  "committer": {
    "name": "Antonio Maiorano",
    "email": "amaiorano@google.com",
    "time": "Wed Nov 18 15:52:49 2020 +0000"
  },
  "message": "Use pragmas to work around MSVC x86_32 debug miscompile bug\n\nHalide users reported this here: https://llvm.org/pr46176\nI reported the issue to MSVC here:\nhttps://developercommunity.visualstudio.com/content/problem/1179643/msvc-copies-overaligned-non-trivially-copyable-par.html\n\nThis codepath is apparently not covered by LLVM\u0027s unit tests, so I added\ncoverage in a unit test.\n\nIf we want to support this configuration going forward, it means that is\nin general not safe to pass a SmallVector\u003cT, N\u003e by value if alignof(T)\nis greater than 4. This doesn\u0027t appear to come up often because passing\na SmallVector by value is inefficient and not idiomatic: it copies the\ninline storage. In this case, the SmallVector\u003cLLT,4\u003e is captured by\nvalue by a lambda, and the lambda is passed by value into std::function,\nand that\u0027s how we hit the bug.\n\nDifferential Revision: https://reviews.llvm.org/D87475\n\nNOTE from amaiorano@ : applied this LLVM patch (without the unittest) to SwiftShader.\n\nBug: b/173512119\nChange-Id: If036f61386b51f9b4a20427812b4ac92d901244d\nReviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/50469\nTested-by: Antonio Maiorano \u003camaiorano@google.com\u003e\nReviewed-by: Nicolas Capens \u003cnicolascapens@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "601d50e9806fdfbfbd631470e20bc6b54d0bfebb",
      "old_mode": 33188,
      "old_path": "third_party/llvm-10.0/llvm/lib/CodeGen/GlobalISel/LegalityPredicates.cpp",
      "new_id": "f0f8c2d0c8c0a01e2a0da10bb841620bb56c765e",
      "new_mode": 33188,
      "new_path": "third_party/llvm-10.0/llvm/lib/CodeGen/GlobalISel/LegalityPredicates.cpp"
    }
  ]
}
