)]}'
{
  "commit": "4f902c7eccd47cc3e1d0ceebca3025406a2e5fa7",
  "tree": "f4f111a17e5cb2aa89e7050bd5c8ef41e30bc2f2",
  "parents": [
    "12350a8e133caefd43d1bc1d18baa66ba5202a3d"
  ],
  "author": {
    "name": "Richard Smith",
    "email": "richard-llvm@metafoo.co.uk",
    "time": "Tue Mar 08 00:32:55 2016 +0000"
  },
  "committer": {
    "name": "Richard Smith",
    "email": "richard-llvm@metafoo.co.uk",
    "time": "Tue Mar 08 00:32:55 2016 +0000"
  },
  "message": "P0188R1: add support for standard [[fallthrough]] attribute. This is almost\nexactly the same as clang\u0027s existing [[clang::fallthrough]] attribute, which\nhas been updated to have the same semantics. The one significant difference\nis that [[fallthrough]] is ill-formed if it\u0027s not used immediately before a\nswitch label (even when -Wimplicit-fallthrough is disabled). To support that,\nwe now build a CFG of any function that uses a \u0027[[fallthrough]];\u0027 statement\nto check.\n\nIn passing, fix some bugs with our support for statement attributes -- in\nparticular, diagnose their use on declarations, rather than asserting.\n\nllvm-svn: 262881\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4d864edf6a5abf0f63d3d67208c7e56a1ded6e25",
      "old_mode": 33188,
      "old_path": "clang/include/clang/AST/Attr.h",
      "new_id": "1ff6abfbbbe7ca0ca8c306bbe90c2bf73b2500d7",
      "new_mode": 33188,
      "new_path": "clang/include/clang/AST/Attr.h"
    },
    {
      "type": "modify",
      "old_id": "4ab7c0294b73d08e1acfa02797212d44dc05cf01",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Basic/Attr.td",
      "new_id": "391d042681604093d077e1862d3accaeb881f05c",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Basic/Attr.td"
    },
    {
      "type": "modify",
      "old_id": "5de6b192715f0a3bb653bef02bff5a6d4239cf3c",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Basic/AttrDocs.td",
      "new_id": "97cb9b2c2030edd363f60b599d141880068a2809",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Basic/AttrDocs.td"
    },
    {
      "type": "modify",
      "old_id": "e76be07ff51d549b86a772ed4d550105bbcbfd4b",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Basic/DiagnosticSemaKinds.td",
      "new_id": "9c3ebcadbcd7f45dff0e196401dfd5b1098ca8fb",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Basic/DiagnosticSemaKinds.td"
    },
    {
      "type": "modify",
      "old_id": "cfa3c0d170340d015a2278012b59288d6450a87f",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Sema/AttributeList.h",
      "new_id": "8a0fbf23feb83ab673e01571ffae6e30220d81fa",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Sema/AttributeList.h"
    },
    {
      "type": "modify",
      "old_id": "881091f1a53070ba5526a1662926d3cdb904e0da",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Sema/ScopeInfo.h",
      "new_id": "30047cddf289cbc21b3af1eeb9df3bfd39875958",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Sema/ScopeInfo.h"
    },
    {
      "type": "modify",
      "old_id": "5f74343fbd95f2b8e0e215f38afb53fe8f3e4e8e",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/AnalysisBasedWarnings.cpp",
      "new_id": "fcb12f6cebf986e0380d271b9509614ac102a796",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/AnalysisBasedWarnings.cpp"
    },
    {
      "type": "modify",
      "old_id": "3c61c95ad8ec37e440340425adc3373929bf6eab",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/AttributeList.cpp",
      "new_id": "cae9393f9f3aae4b9914a7feecae373cae9db4d9",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/AttributeList.cpp"
    },
    {
      "type": "modify",
      "old_id": "ce78ab009268812ad34f33c0c59aeba68f597f51",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaDeclAttr.cpp",
      "new_id": "1fca27f8b9596d901fb5e340d71c9a9c6c0ed4da",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaDeclAttr.cpp"
    },
    {
      "type": "modify",
      "old_id": "0279441ee208b44c3ba6126cc496623cf2b10813",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaStmtAttr.cpp",
      "new_id": "c1c7e808dc39270b953e06a09ab04d42be7fe6fa",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaStmtAttr.cpp"
    },
    {
      "type": "modify",
      "old_id": "3c33de33558f92ee2924904a1b4a5e84e8933a04",
      "old_mode": 33188,
      "old_path": "clang/test/Analysis/cxx11-crashes.cpp",
      "new_id": "c6034e6480ee7654b6da697cb20317f7533ce128",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/cxx11-crashes.cpp"
    },
    {
      "type": "modify",
      "old_id": "f4d0619a3f98acba99c2940c78887211888c5ca7",
      "old_mode": 33188,
      "old_path": "clang/test/PCH/Inputs/cxx11-statement-attributes.h",
      "new_id": "3f85e1fa2b0621f598e9fcd8ba887b0eb0d60be2",
      "new_mode": 33188,
      "new_path": "clang/test/PCH/Inputs/cxx11-statement-attributes.h"
    },
    {
      "type": "modify",
      "old_id": "722ca6e9ffa32c18c78eb0d788929689997f5e48",
      "old_mode": 33188,
      "old_path": "clang/test/PCH/cxx11-statement-attributes.cpp",
      "new_id": "b5dfc6cd4c0fc387244e06b764cbdedf5f55c297",
      "new_mode": 33188,
      "new_path": "clang/test/PCH/cxx11-statement-attributes.cpp"
    },
    {
      "type": "modify",
      "old_id": "7eec5761ea055d492e8bfa41442740ca1c406dba",
      "old_mode": 33188,
      "old_path": "clang/test/Parser/cxx0x-attributes.cpp",
      "new_id": "c032e4723bbbbd299380fc9d17913dc0a1dd245d",
      "new_mode": 33188,
      "new_path": "clang/test/Parser/cxx0x-attributes.cpp"
    },
    {
      "type": "modify",
      "old_id": "9359ae63a60b0a54e8151644e5612ca1d0f9d753",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/for-range-examples.cpp",
      "new_id": "83023e31101882f0d1dc33aa9084bcf1ba2e1537",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/for-range-examples.cpp"
    },
    {
      "type": "modify",
      "old_id": "8fa20d0a0f098be579c1a2abacac51e6951bedca",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/generalized-deprecated.cpp",
      "new_id": "43efea1ea4e6c452aeb177eef5a81ecb5a31c02e",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/generalized-deprecated.cpp"
    },
    {
      "type": "modify",
      "old_id": "5fa4177095bf72ce2b53a20762553f5f35f58b06",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/nodiscard.cpp",
      "new_id": "e53cf9bb06fdcbf911f85b7819d1d0446822409a",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/nodiscard.cpp"
    },
    {
      "type": "modify",
      "old_id": "add212fcf5d85e829e00dda5701c3fdbedc95fcd",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/switch-implicit-fallthrough-macro.cpp",
      "new_id": "11df2cbfb53f093adcfd30dd60362de5435a1b07",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/switch-implicit-fallthrough-macro.cpp"
    },
    {
      "type": "modify",
      "old_id": "009c8180b1bb877e8b9a77946516001daaf92357",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp",
      "new_id": "6880bdd5f47d5f847b1d66f10a6cbad4f8e6cb45",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp"
    },
    {
      "type": "modify",
      "old_id": "0bc43cdbd45b21edc90e050bc85fac781df81e67",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/switch-implicit-fallthrough.cpp",
      "new_id": "9540b1ff28808bb3214ccc8870e9e8090a9f782b",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/switch-implicit-fallthrough.cpp"
    },
    {
      "type": "modify",
      "old_id": "20147d2595fc6d32c1db2fabf31ff60f454ee2ed",
      "old_mode": 33188,
      "old_path": "clang/utils/TableGen/ClangAttrEmitter.cpp",
      "new_id": "57c7cb3ea87a22352d2d9ae5d5da9f0156c22c30",
      "new_mode": 33188,
      "new_path": "clang/utils/TableGen/ClangAttrEmitter.cpp"
    },
    {
      "type": "modify",
      "old_id": "5027ae8174e83cdc141ba21b1315d76e6d3f33a1",
      "old_mode": 33188,
      "old_path": "clang/www/cxx_status.html",
      "new_id": "5674bff89ae8d0a02f0ce28d13dec48cf20c7cc4",
      "new_mode": 33188,
      "new_path": "clang/www/cxx_status.html"
    }
  ]
}
