)]}'
{
  "commit": "5dc2754c0945d076a7482d6468d3de4ba550fd89",
  "tree": "befb0c3403ad84f0b6c700af4c4e214fdd02d163",
  "parents": [
    "522764dfc68642c47212f9e9fe3f8e84961e3d0c"
  ],
  "author": {
    "name": "David Malcolm",
    "email": "dmalcolm@redhat.com",
    "time": "Fri Nov 13 16:26:07 2026 -0500"
  },
  "committer": {
    "name": "David Malcolm",
    "email": "dmalcolm@redhat.com",
    "time": "Fri Nov 13 16:26:07 2026 -0500"
  },
  "message": "analyzer: add unit-safe integer classes\n\nThis patch introduces a template class ana::integer_with_unit\u003cUnit\u003e\nwrapping the arbitrary-precision ana::integer introduced in the previous\npatch, capturing the units of the integer in the type system: bits vs\nbytes vs unitless.  The idea is that if we mess up bits vs bytes in the\nanalyzer implementation, we get a compile-time type error.  The class\nalso supports user-defined literals, so we can write e.g.\n  8_bits\nin the code, rather than\n  integer_with_unit\u003cunits::bit\u003e (8)\n\nAs in the previous patch, nothing uses this yet, but it is fundamental\nto my upcoming rewrite of the analyzer\u0027s state-tracking.\n\ngcc/ChangeLog:\n\t* Makefile.in (ANALYZER_OBJS): Add analyzer/integer-with-unit.o.\n\ngcc/analyzer/ChangeLog:\n\t* analyzer-selftests.cc (run_analyzer_selftests): Call\n\tanalyzer_integer_with_unit_cc_tests.\n\t* analyzer-selftests.h (analyzer_integer_with_unit_cc_tests): New\n\tdecl.\n\t* integer-with-unit.cc: New file.\n\t* integer-with-unit.h: New file.\n\t* units.h: New file.\n\nSigned-off-by: David Malcolm \u003cdmalcolm@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5bb019c2343d2c343a983258ad45390cf00e1e54",
      "old_mode": 33188,
      "old_path": "gcc/Makefile.in",
      "new_id": "7f95cbb7cdfdb12b5023261448e5603741ea634c",
      "new_mode": 33188,
      "new_path": "gcc/Makefile.in"
    },
    {
      "type": "modify",
      "old_id": "cf5af41c8d7a58bb2d12bb5b6bd8fbb9392bec83",
      "old_mode": 33188,
      "old_path": "gcc/analyzer/analyzer-selftests.cc",
      "new_id": "1cfb2007a6391d18e6bd0564e3e393acc7dfe355",
      "new_mode": 33188,
      "new_path": "gcc/analyzer/analyzer-selftests.cc"
    },
    {
      "type": "modify",
      "old_id": "f3af1115f07e48f89ee1959bbed47f35bc80d105",
      "old_mode": 33188,
      "old_path": "gcc/analyzer/analyzer-selftests.h",
      "new_id": "f32846fdcf867cdd9f7dbd80fdd80fb9840030b5",
      "new_mode": 33188,
      "new_path": "gcc/analyzer/analyzer-selftests.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a10b0b940d7d4cabeec19677c5c12613ee81823a",
      "new_mode": 33188,
      "new_path": "gcc/analyzer/integer-with-unit.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "daf5953729490d46e910585eb6cae3bcf50d5fa7",
      "new_mode": 33188,
      "new_path": "gcc/analyzer/integer-with-unit.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a0117323fe3968d017463739f378bebd1b091da0",
      "new_mode": 33188,
      "new_path": "gcc/analyzer/units.h"
    }
  ]
}
