)]}'
{
  "commit": "f779ebce55bc5d325bbc985fed3d7b214142af08",
  "tree": "4069cfe1774d502e148ad6b2136c90aed3e074bf",
  "parents": [
    "d6a970d527b53344ee0a97882be28a47724d8007"
  ],
  "author": {
    "name": "Timm Baeder",
    "email": "tbaeder@redhat.com",
    "time": "Thu Apr 16 10:38:48 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Apr 16 10:38:48 2026 +0200"
  },
  "message": "[clang][ExprConst] Add \"declared here\" notes to uninitialized read diagnostics (#192206)\n\nE.g. for\n\n```c++\nconstexpr int unInitLocal() {\n  int a;\n  return a; // both-note {{read of uninitialized object}}\n}\nstatic_assert(unInitLocal() \u003d\u003d 0, \"\"); // both-error {{not an integral constant expression}} \\\n                                       // both-note {{in call to \u0027unInitLocal()\u0027}}\n```\n\nwe now diagnose:\n```console\narray.cpp:896:15: error: static assertion expression is not an integral constant expression\n  896 | static_assert(unInitLocal() \u003d\u003d 0, \"\"); // both-error {{not an integral constant expression}} \\\n      |               ^~~~~~~~~~~~~~~~~~\narray.cpp:894:10: note: read of uninitialized object is not allowed in a constant expression\n  894 |   return a; // both-note {{read of uninitialized object}}\n      |          ^\narray.cpp:896:15: note: in call to \u0027unInitLocal()\u0027\n  896 | static_assert(unInitLocal() \u003d\u003d 0, \"\"); // both-error {{not an integral constant expression}} \\\n      |               ^~~~~~~~~~~~~\narray.cpp:893:7: note: declared here\n  893 |   int a;\n      |       ^\n1 warning and 1 error generated.\n```\nand point at the object that we were trying to read from. This adds an\n`NoteLValueLocation()` call to the emission of\n`note_constexpr_access_uninit`, which is already done in other places:\n\n\nhttps://github.com/llvm/llvm-project/blob/7ae5fe63dd979eae13ea04e166f94056ec1306ca/clang/lib/AST/ExprConstant.cpp#L4565-L4570",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "abcf55bfa670d46ff5aaea7224906f7a4f38d87b",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ByteCode/Interp.cpp",
      "new_id": "5bc10675185588ca2bd5d0f8017ba08d26fae88b",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ByteCode/Interp.cpp"
    },
    {
      "type": "modify",
      "old_id": "99651ca98ea6d7752dbfd621711cb876dec62216",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ByteCode/Interp.h",
      "new_id": "ea94df2c90187987c2a813bd58d8fb330046ea5c",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ByteCode/Interp.h"
    },
    {
      "type": "modify",
      "old_id": "4f45fa728c6051e44a83692977207c66673b41e8",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ExprConstant.cpp",
      "new_id": "a185f1b631cf8bbb17e48d9f1775443613578cc9",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ExprConstant.cpp"
    },
    {
      "type": "modify",
      "old_id": "5aa4e256e4638284928b56fef8e03a2c4ccde9fc",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp",
      "new_id": "2eefa138f7f0a251482b9f9a7e841980014ea6c0",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp"
    },
    {
      "type": "modify",
      "old_id": "1013a771d13b4b0dd1e02a1e19a959f29b993c32",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/builtin-bit-cast-long-double.cpp",
      "new_id": "7e34c3ff9d7558712395e0e2ace7c63696f1b6f5",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/builtin-bit-cast-long-double.cpp"
    },
    {
      "type": "modify",
      "old_id": "93b6e06490e6172386a4d1d9368d9cdf1fc8f1da",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/builtin-functions.cpp",
      "new_id": "f423ef1c8b3018c77cd1db757ec4c6a351bd7495",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/builtin-functions.cpp"
    },
    {
      "type": "modify",
      "old_id": "ed038dbc9b0779e238b03a71cc61dbb2ff5c2697",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/constexpr-nqueens.cpp",
      "new_id": "63a3e63c3765c2205081b410537ab30c8d97a949",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/constexpr-nqueens.cpp"
    },
    {
      "type": "modify",
      "old_id": "668228e2dc166940008d3cc395ce3d68c05e575c",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/cxx11.cpp",
      "new_id": "a4c4be14775b3699aa5fa0622ce0c9c02c1969f6",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/cxx11.cpp"
    },
    {
      "type": "modify",
      "old_id": "583d9879ad245cdc5369d7d2be0b93b0daf597d2",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/cxx17.cpp",
      "new_id": "166638b0f52116159695bc9427376d7df16cc803",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/cxx17.cpp"
    },
    {
      "type": "modify",
      "old_id": "9800fe01fcaf5bcdc7aba5b203754cd7201fd6ec",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/cxx20.cpp",
      "new_id": "27ba0349d634e3e4924d78ae12dc93132a1501d5",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/cxx20.cpp"
    },
    {
      "type": "modify",
      "old_id": "533173d84792fe0c0c0d987d0d11477aa63c9c83",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/cxx2a.cpp",
      "new_id": "78769a4def5b01c409371fe7764c0b324684d87a",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/cxx2a.cpp"
    },
    {
      "type": "modify",
      "old_id": "96c868209c5b2b635ca569789510150f3ecdae44",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/lifetimes.cpp",
      "new_id": "e775bed751821c0ba7bd666ae0aa15834853ea39",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/lifetimes.cpp"
    },
    {
      "type": "modify",
      "old_id": "8db4ddb1ec51d37f680b19bc13100bef2ddf4e41",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/lifetimes26.cpp",
      "new_id": "7906ef7fca67e0be7b414f6423c4061853a9aae5",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/lifetimes26.cpp"
    },
    {
      "type": "modify",
      "old_id": "d637eccc448c49b5f8780c5acdb627939582b2f3",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/literals.cpp",
      "new_id": "f7eae07c8060a604010d803f1fb6b450b05e4fe9",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/literals.cpp"
    },
    {
      "type": "modify",
      "old_id": "bf892e79a67ac6c9d45ae1d00529e35a9c9ffc83",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/new-delete.cpp",
      "new_id": "3eb0d1a13bf493ff2ddb28328fb43002af3bbbf1",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/new-delete.cpp"
    },
    {
      "type": "modify",
      "old_id": "5bad616a0d359c7c87dcca497e066eb1bdd21c49",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/placement-new.cpp",
      "new_id": "a05a4a18eed61dfed3dee15615a046555ff01ae4",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/placement-new.cpp"
    },
    {
      "type": "modify",
      "old_id": "db02a7d23151e827e2d09fab29107945cb128b02",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/records.cpp",
      "new_id": "29f4f424d770725b9b9fd12ae370b1421d2263fa",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/records.cpp"
    },
    {
      "type": "modify",
      "old_id": "2123a932fce1093f02e6f91fa3f3ff8b25c8d902",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ByteCode/unions.cpp",
      "new_id": "8cf1d414b70b123b0a2b2adc5b0233e74a7ac210",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ByteCode/unions.cpp"
    },
    {
      "type": "modify",
      "old_id": "69674d8e8f4b2c19c5c0d3e7719a4984cf087e29",
      "old_mode": 33188,
      "old_path": "clang/test/C/C23/n3006.c",
      "new_id": "16352c37524272a5218807e77a157aa09036e5e1",
      "new_mode": 33188,
      "new_path": "clang/test/C/C23/n3006.c"
    },
    {
      "type": "modify",
      "old_id": "b7fef12a40b38868a0fd8f09b9891d2ddb2501fb",
      "old_mode": 33188,
      "old_path": "clang/test/CXX/dcl.decl/dcl.decomp/p3.cpp",
      "new_id": "b9d19c1eb4371b507796e1b5ca61979f6b4a0f4a",
      "new_mode": 33188,
      "new_path": "clang/test/CXX/dcl.decl/dcl.decomp/p3.cpp"
    },
    {
      "type": "modify",
      "old_id": "23469f999b773437de06f08ecb957652e3105161",
      "old_mode": 33188,
      "old_path": "clang/test/CXX/drs/cwg2026.cpp",
      "new_id": "a9d04308c10e8ea349e869a158336c1a2f753e22",
      "new_mode": 33188,
      "new_path": "clang/test/CXX/drs/cwg2026.cpp"
    },
    {
      "type": "modify",
      "old_id": "041d56ea3a1db3fc2b74fcd0e5da06a63175007f",
      "old_mode": 33188,
      "old_path": "clang/test/CXX/drs/cwg3xx.cpp",
      "new_id": "1b7b273f76b66a62fdfba2eb5503e62461ac4595",
      "new_mode": 33188,
      "new_path": "clang/test/CXX/drs/cwg3xx.cpp"
    },
    {
      "type": "modify",
      "old_id": "8401d3033eda942492cb9c032a8d9c1a0b238110",
      "old_mode": 33188,
      "old_path": "clang/test/CXX/expr/expr.const/p2-0x.cpp",
      "new_id": "01535786655a2d4b5361ba289fddd1a2d622512c",
      "new_mode": 33188,
      "new_path": "clang/test/CXX/expr/expr.const/p2-0x.cpp"
    },
    {
      "type": "modify",
      "old_id": "0b8de906e1838aac043b73f31a869d5630f5796f",
      "old_mode": 33188,
      "old_path": "clang/test/Sema/constexpr.c",
      "new_id": "19f9033cf924e00b3e3896512e4c53d5f0f51436",
      "new_mode": 33188,
      "new_path": "clang/test/Sema/constexpr.c"
    },
    {
      "type": "modify",
      "old_id": "b47efc9f79630858e0ccf393710497ec37cd7df5",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/builtin-is-within-lifetime.cpp",
      "new_id": "c7ebce55c5c95ae0b75ad1e6a5fbdaad9590fbe5",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/builtin-is-within-lifetime.cpp"
    },
    {
      "type": "modify",
      "old_id": "91c4ff1cb520dfd8e08de3b8a3de3e64c10c5fca",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/constant-expression-cxx11.cpp",
      "new_id": "47a064c4026b49738765509cb5250c9fd238ce8a",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/constant-expression-cxx11.cpp"
    },
    {
      "type": "modify",
      "old_id": "a917837410ee551ce323be624dd9e1023a690c38",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/constant-expression-cxx14.cpp",
      "new_id": "9c0e87cac54cfac612b6d0f362fb47376d68bc70",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/constant-expression-cxx14.cpp"
    },
    {
      "type": "modify",
      "old_id": "fb60b5300c36252c57fbff8348698721ee231592",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/constant-expression-cxx2a.cpp",
      "new_id": "396a8df21a3e3a976e5378ef6c8a070a46bbd88a",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/constant-expression-cxx2a.cpp"
    },
    {
      "type": "modify",
      "old_id": "0a7668b1ed1fe19834ce2ca054fb05bcfaddc528",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/constexpr-builtin-bit-cast.cpp",
      "new_id": "839de827443795fd6311c37af61289308fe01737",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/constexpr-builtin-bit-cast.cpp"
    },
    {
      "type": "modify",
      "old_id": "08c80a0bb7fdb04d9b167923e6044e2f30238b8d",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/constexpr-printing.cpp",
      "new_id": "b5aa050aea25f431e0b9123b628f685c11034a29",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/constexpr-printing.cpp"
    },
    {
      "type": "modify",
      "old_id": "18fa9cf0736a69d5c3d23278071861fd078a5cc7",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/constexpr-value-init.cpp",
      "new_id": "bd1c254dd200abd9a176a36d1ebc8012c0225371",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/constexpr-value-init.cpp"
    },
    {
      "type": "modify",
      "old_id": "25cd2c9538a908846892ac712a5c7151d687d8c8",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/cxx2a-constexpr-dynalloc.cpp",
      "new_id": "3088923c009ae4341d28ffea8562de0cd697ee62",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/cxx2a-constexpr-dynalloc.cpp"
    },
    {
      "type": "modify",
      "old_id": "4cf0e9ffe1d642cec65df3e4b49760e8190b8717",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/cxx2c-constexpr-placement-new.cpp",
      "new_id": "7034a45231281abcf1f6b5debd53cfb0ba29a0d3",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/cxx2c-constexpr-placement-new.cpp"
    },
    {
      "type": "modify",
      "old_id": "b2ebd2abb785ed2bbadf96978089288fe16dd639",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/static-assert-cxx26.cpp",
      "new_id": "5dbe2c37307bdbf639d9c762a8fb7b4d68cf9d3b",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/static-assert-cxx26.cpp"
    }
  ]
}
