)]}'
{
  "commit": "6a57d1216a47e12b4697ceb605b4a1e267109e7b",
  "tree": "798ca5030e2add2471363b39e5d311e401c14265",
  "parents": [
    "1d67b639b8a7eee51d19f4b11abd10b22cc25008"
  ],
  "author": {
    "name": "Alex Lorenz",
    "email": "arphaman@gmail.com",
    "time": "Tue Apr 18 14:33:39 2017 +0000"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Sun Sep 20 02:39:03 2020 -0700"
  },
  "message": "Add #pragma clang attribute\n\nThis is a recommit of r300539 that was reverted in r300543 due to test failures.\nThe original commit message is displayed below:\n\nThe new \u0027#pragma clang attribute\u0027 directive can be used to apply attributes to\nmultiple declarations. An attribute must satisfy the following conditions to\nbe supported by the pragma:\n- It must have a subject list that\u0027s defined in the TableGen file.\n- It must be documented.\n- It must not be late parsed.\n- It must have a GNU/C++11 spelling.\n\nDifferential Revision: https://reviews.llvm.org/D30009\n\nllvm-svn: 300556\nGitOrigin-RevId: 9e7bf161ea9083e9282cf4af72ac0d5f13115753\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a8fb4623b637a4bb174e7c678b3e0b2646c52738",
      "old_mode": 33188,
      "old_path": "docs/LanguageExtensions.rst",
      "new_id": "187dae751be1e863071b3285ab8104a6f69a1246",
      "new_mode": 33188,
      "new_path": "docs/LanguageExtensions.rst"
    },
    {
      "type": "modify",
      "old_id": "c5d2c7fc618b4340bafd441abde41b80f85b2b3b",
      "old_mode": 33188,
      "old_path": "include/clang/Basic/Attr.td",
      "new_id": "bf62408db2ccad316cb4e39e9fcca328e110e893",
      "new_mode": 33188,
      "new_path": "include/clang/Basic/Attr.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "955f495ad67d7ed0282cc8f1141d1240b22ec59a",
      "new_mode": 33188,
      "new_path": "include/clang/Basic/AttrSubjectMatchRules.h"
    },
    {
      "type": "modify",
      "old_id": "e4929b5b52b96e3d5802937a39b1f1e415c8229b",
      "old_mode": 33188,
      "old_path": "include/clang/Basic/CMakeLists.txt",
      "new_id": "3e0fb8728c4835542b29c39f152882767ebd6523",
      "new_mode": 33188,
      "new_path": "include/clang/Basic/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "4bcf3be0a8eb81028fc360b4266fa4b6c306fde2",
      "old_mode": 33188,
      "old_path": "include/clang/Basic/DiagnosticGroups.td",
      "new_id": "4cde1c81fd4df300c295097b1c0a8446b7e2bf9e",
      "new_mode": 33188,
      "new_path": "include/clang/Basic/DiagnosticGroups.td"
    },
    {
      "type": "modify",
      "old_id": "aebf8a9f35743b0756bbf8de07f15b0fa89d3f26",
      "old_mode": 33188,
      "old_path": "include/clang/Basic/DiagnosticParseKinds.td",
      "new_id": "d95e43c10c558984ded253b4c751aa0d7f3bb3e1",
      "new_mode": 33188,
      "new_path": "include/clang/Basic/DiagnosticParseKinds.td"
    },
    {
      "type": "modify",
      "old_id": "8afe61645ae0951acc6d81cc0d20b7e48d0649ed",
      "old_mode": 33188,
      "old_path": "include/clang/Basic/DiagnosticSemaKinds.td",
      "new_id": "3912a85491889ed3f8aa32ac6c7bead9eb63552d",
      "new_mode": 33188,
      "new_path": "include/clang/Basic/DiagnosticSemaKinds.td"
    },
    {
      "type": "modify",
      "old_id": "48e0c33f0e862e24a10840fa3132f40e0d4f5589",
      "old_mode": 33188,
      "old_path": "include/clang/Basic/TokenKinds.def",
      "new_id": "968b203a38279a3cc07cd5231e7faa0b9d64fcb1",
      "new_mode": 33188,
      "new_path": "include/clang/Basic/TokenKinds.def"
    },
    {
      "type": "modify",
      "old_id": "ec75f7b96b146e84235d31269de8231c523c0e8f",
      "old_mode": 33188,
      "old_path": "include/clang/Parse/CMakeLists.txt",
      "new_id": "2cc7e54b3b01a2bf84539eb07f02c60d8ca19bee",
      "new_mode": 33188,
      "new_path": "include/clang/Parse/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "5f4e5fb4b215c15c66854814068e885c806687ec",
      "old_mode": 33188,
      "old_path": "include/clang/Parse/Parser.h",
      "new_id": "8d0935dec1b638b2bc97466b67f8468d30b9ac31",
      "new_mode": 33188,
      "new_path": "include/clang/Parse/Parser.h"
    },
    {
      "type": "modify",
      "old_id": "7c1678086c2f8246017f11ff85ce8c3a810a4c0e",
      "old_mode": 33188,
      "old_path": "include/clang/Sema/AttributeList.h",
      "new_id": "f3b042c9ce791757b653301e860359bf898628a4",
      "new_mode": 33188,
      "new_path": "include/clang/Sema/AttributeList.h"
    },
    {
      "type": "modify",
      "old_id": "5a3cdfb77c9c99f5d36ca896f49705682face228",
      "old_mode": 33188,
      "old_path": "include/clang/Sema/Sema.h",
      "new_id": "bd68842c9f73a9cbce4bdf0e9c98d1979b9cca6c",
      "new_mode": 33188,
      "new_path": "include/clang/Sema/Sema.h"
    },
    {
      "type": "modify",
      "old_id": "c215366fc398a2fd024b385f6e499016a1dda728",
      "old_mode": 33188,
      "old_path": "lib/Basic/Attributes.cpp",
      "new_id": "b7570d03c85aebb40b8a196f7c21f3218c695d24",
      "new_mode": 33188,
      "new_path": "lib/Basic/Attributes.cpp"
    },
    {
      "type": "modify",
      "old_id": "c8de6b35f9ef1d6f3855e87d6a23af3a4da3f104",
      "old_mode": 33188,
      "old_path": "lib/Parse/ParsePragma.cpp",
      "new_id": "c34cd09a62389891f1bc00528f530eb2f5087daf",
      "new_mode": 33188,
      "new_path": "lib/Parse/ParsePragma.cpp"
    },
    {
      "type": "modify",
      "old_id": "eaff9fe8eedf1a32c04710e54213389b37b25eed",
      "old_mode": 33188,
      "old_path": "lib/Parse/ParseStmt.cpp",
      "new_id": "7d78046d06841dd6c2c10e5b38560ba3ae0fcde1",
      "new_mode": 33188,
      "new_path": "lib/Parse/ParseStmt.cpp"
    },
    {
      "type": "modify",
      "old_id": "aa8ed91d382f34accdabf7d48db88342a0116c61",
      "old_mode": 33188,
      "old_path": "lib/Parse/Parser.cpp",
      "new_id": "265c12d7d5e75e32a9b352f03e6d4112fba3d51f",
      "new_mode": 33188,
      "new_path": "lib/Parse/Parser.cpp"
    },
    {
      "type": "modify",
      "old_id": "55e9601bf5e5877b0e2ecc0b54ba09be1035d659",
      "old_mode": 33188,
      "old_path": "lib/Sema/AttributeList.cpp",
      "new_id": "724db456785fb69c2ca9da66abcd87cac81c8238",
      "new_mode": 33188,
      "new_path": "lib/Sema/AttributeList.cpp"
    },
    {
      "type": "modify",
      "old_id": "294b56059b33bb5e44119642bb30b81bb709edf7",
      "old_mode": 33188,
      "old_path": "lib/Sema/Sema.cpp",
      "new_id": "950f04088822e922b68f0c98df55e46181feee94",
      "new_mode": 33188,
      "new_path": "lib/Sema/Sema.cpp"
    },
    {
      "type": "modify",
      "old_id": "c6e3cc88631669ba65cc5d08548344b08f67e696",
      "old_mode": 33188,
      "old_path": "lib/Sema/SemaAttr.cpp",
      "new_id": "dfc5d6cd01512e687eda44b692b7efe4cd7d0a0d",
      "new_mode": 33188,
      "new_path": "lib/Sema/SemaAttr.cpp"
    },
    {
      "type": "modify",
      "old_id": "c6a0b0101d374465a2da763c7c133a0d1954d3c9",
      "old_mode": 33188,
      "old_path": "lib/Sema/SemaDecl.cpp",
      "new_id": "075e87b75cdcf4331bc6c89304f545ac8220d069",
      "new_mode": 33188,
      "new_path": "lib/Sema/SemaDecl.cpp"
    },
    {
      "type": "modify",
      "old_id": "a1ba9de368dbf12529682a9938c61f79832edf62",
      "old_mode": 33188,
      "old_path": "lib/Sema/SemaDeclAttr.cpp",
      "new_id": "ae941c88ca3eec813cf0deca707557ce15c4f49c",
      "new_mode": 33188,
      "new_path": "lib/Sema/SemaDeclAttr.cpp"
    },
    {
      "type": "modify",
      "old_id": "fd3f266c9a08ef32088a332884c92ed4a45e8d50",
      "old_mode": 33188,
      "old_path": "lib/Sema/SemaDeclCXX.cpp",
      "new_id": "b543a731641f18dced39670c98b09c2944b32bbc",
      "new_mode": 33188,
      "new_path": "lib/Sema/SemaDeclCXX.cpp"
    },
    {
      "type": "modify",
      "old_id": "e50f8b206779720fd5dd826c75662bda6256d5a9",
      "old_mode": 33188,
      "old_path": "lib/Sema/SemaDeclObjC.cpp",
      "new_id": "4f51cd399c0cd48709314953f8acdd21645e3d5e",
      "new_mode": 33188,
      "new_path": "lib/Sema/SemaDeclObjC.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f166eb2978e3b422a9e7b721a6a799208b151708",
      "new_mode": 33188,
      "new_path": "test/FixIt/fixit-pragma-attribute.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8e3f6d9392f0ca573cbb01820c19c8bdc04293d1",
      "new_mode": 33188,
      "new_path": "test/FixIt/fixit-pragma-attribute.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b7741343ad456211686602d2c34f5e0d1b17da42",
      "new_mode": 33188,
      "new_path": "test/Misc/pragma-attribute-cxx-subject-match-rules.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c241c4e4bdbacadf45419a8ca916154c9e707097",
      "new_mode": 33188,
      "new_path": "test/Misc/pragma-attribute-cxx.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "09ab5e1f33a0d21bad105a67a627c255033315cd",
      "new_mode": 33188,
      "new_path": "test/Misc/pragma-attribute-objc-subject-match-rules.m"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "541cfa9ad3bc0466a28627ddfa108f576ce2ca14",
      "new_mode": 33188,
      "new_path": "test/Misc/pragma-attribute-objc.m"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ecd551bee6c76fd4b3d66ca21fcac5e7ad0cb651",
      "new_mode": 33188,
      "new_path": "test/Misc/pragma-attribute-strict-subjects.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b1f2e66ab3397bc1e27054039f163a6f23b7fa0f",
      "new_mode": 33188,
      "new_path": "test/Misc/pragma-attribute-supported-attributes-list.test"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "28785ba90063c12e97a379845259e3a51ea00dff",
      "new_mode": 33188,
      "new_path": "test/Parser/pragma-attribute-declspec.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b28ec8c2c86d119a46f15e84b7c9e02d3ecc032d",
      "new_mode": 33188,
      "new_path": "test/Parser/pragma-attribute.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a84e2bde38d5d51eeadbba991dba765fe75467f0",
      "new_mode": 33188,
      "new_path": "test/Sema/pragma-attribute-strict-subjects.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d321f2ce4be7617b37389cae276e49430540e035",
      "new_mode": 33188,
      "new_path": "test/Sema/pragma-attribute.c"
    },
    {
      "type": "modify",
      "old_id": "e4a13054ba8127232706d048827f74ad95369561",
      "old_mode": 33188,
      "old_path": "test/lit.cfg",
      "new_id": "a5e8b9de994b145329ce7667cac3276403c64e51",
      "new_mode": 33188,
      "new_path": "test/lit.cfg"
    },
    {
      "type": "modify",
      "old_id": "8fdfbfc4842ed621f34541c8b571683e05641f74",
      "old_mode": 33188,
      "old_path": "test/lit.site.cfg.in",
      "new_id": "63d713987482aacad6af611ec4bf1389775d1817",
      "new_mode": 33188,
      "new_path": "test/lit.site.cfg.in"
    },
    {
      "type": "modify",
      "old_id": "8aaa28beaac2ae88f0b3c08365b385266bf04c57",
      "old_mode": 33188,
      "old_path": "utils/TableGen/ClangAttrEmitter.cpp",
      "new_id": "97b3c405900bab5af97ac045d3ae1bc9d539850b",
      "new_mode": 33188,
      "new_path": "utils/TableGen/ClangAttrEmitter.cpp"
    },
    {
      "type": "modify",
      "old_id": "fd7999be3877401c149e0fd8084e61031e0be890",
      "old_mode": 33188,
      "old_path": "utils/TableGen/TableGen.cpp",
      "new_id": "781518ddbc31268646b840caace2df91468f103a",
      "new_mode": 33188,
      "new_path": "utils/TableGen/TableGen.cpp"
    },
    {
      "type": "modify",
      "old_id": "033cb78f36f36200e8ce16ceac6cce46b2487be6",
      "old_mode": 33188,
      "old_path": "utils/TableGen/TableGenBackends.h",
      "new_id": "e1b7d0ec63be35718367357802ae1b5dccd3c5aa",
      "new_mode": 33188,
      "new_path": "utils/TableGen/TableGenBackends.h"
    }
  ]
}
