)]}'
{
  "commit": "dac3ea4eb3f6fc75be4305b9b7ed1a861ea5993e",
  "tree": "1871a1c31d1cfbf4fed4cd8a76fb226b51b6ef65",
  "parents": [
    "f1d538cce54b4a2ae06b07cf5323b0137f5385d3"
  ],
  "author": {
    "name": "Richard Smith",
    "email": "richard-llvm@metafoo.co.uk",
    "time": "Wed Aug 14 02:30:11 2019 +0000"
  },
  "committer": {
    "name": "Richard Smith",
    "email": "richard-llvm@metafoo.co.uk",
    "time": "Wed Aug 14 02:30:11 2019 +0000"
  },
  "message": "Add __has_builtin support for builtin function-like type traits.\n\nSummary:\nPreviously __has_builtin(__builtin_*) would return false for\n__builtin_*s that we modeled as keywords rather than as functions\n(because they take type arguments). With this patch, all builtins\nthat are called with function-call-like syntax return true from\n__has_builtin (covering __builtin_* and also the __is_* and __has_* type\ntraits and the handful of similar builtins without such a prefix).\n\nUpdate the documentation on __has_builtin and on type traits to match.\nWhile doing this I noticed the type trait documentation was out of date\nand incomplete; that\u0027s fixed here too.\n\nReviewers: aaron.ballman\n\nSubscribers: jfb, kristina, cfe-commits\n\nTags: #clang\n\nDifferential Revision: https://reviews.llvm.org/D66100\n\nllvm-svn: 368785\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ef75feb9887dd6fefd82fb3de0437a550488285f",
      "old_mode": 33188,
      "old_path": "clang/docs/LanguageExtensions.rst",
      "new_id": "2731bae4154475e73ccd1976690a36989d93bde4",
      "new_mode": 33188,
      "new_path": "clang/docs/LanguageExtensions.rst"
    },
    {
      "type": "modify",
      "old_id": "7081c02e83eac9171ad11b480dde885fccdc2e57",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Basic/Features.def",
      "new_id": "57132f5c0ffb94b75c395354f3d4f0290e24d654",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Basic/Features.def"
    },
    {
      "type": "modify",
      "old_id": "c1ba44e356135a4fbe4182f8d7edf65e6571e194",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Basic/TokenKinds.def",
      "new_id": "5221fcec92a0801a5bea78da13ea65ab1b7b2bf6",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Basic/TokenKinds.def"
    },
    {
      "type": "modify",
      "old_id": "687b9a9d3b7bddf184a85b3df6a5a70930f27ee0",
      "old_mode": 33188,
      "old_path": "clang/lib/Lex/PPMacroExpansion.cpp",
      "new_id": "743206b1897360f95aac773ce3ef2662ccc6cafb",
      "new_mode": 33188,
      "new_path": "clang/lib/Lex/PPMacroExpansion.cpp"
    },
    {
      "type": "modify",
      "old_id": "2035a729f2d0e9f8aafe8c2a8f38a559a2cc3629",
      "old_mode": 33188,
      "old_path": "clang/test/Preprocessor/feature_tests.c",
      "new_id": "2568e291b90d04a801197b886941f4ff0812703b",
      "new_mode": 33188,
      "new_path": "clang/test/Preprocessor/feature_tests.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "50da228a4efeb9be695227234ac39bcb65f691ff",
      "new_mode": 33188,
      "new_path": "clang/test/Preprocessor/feature_tests.cpp"
    }
  ]
}
