# Since version 2.23 (released in August 2019), git-blame has a feature
# to ignore or bypass certain commits.
#
# This file contains a list of commits that are not likely what you
# are looking for in a blame, such as mass reformatting or renaming.
# You can set this file as a default ignore file for blame by running
# the following command.
#
# $ git config blame.ignoreRevsFile .git-blame-ignore-revs

# r365730: [Coding style change][lld] Rename variables for non-ELF ports
136d27ab4de0c1d5dedfecc32a9857be78fa0648

# r365595: [Coding style change] Rename variables so that they start with a lowercase letter
3837f4273fcc40cc519035479aefe78e5cbd3055

# r280751: [Coding style change][lldb] Moved LLDB code base to use LLVM style
b9c1b51e45b845debb76d8658edabca70ca56079

# r302421: That change incorrectly changed line endings in some libc++ files
9669df28d4fd3c52d09f451186bd217cdc3322c0

# r302496: That is the revert of r302421
ff63090b0e1072bd398b8efef8ae2291613a6ec9

# Fix more line endings changed in r320089. NFC.
d8f0e6caa91e230a486c948ab643174e40bdf215

# Correct line endings that got mixed up in r320089; NFC.
29dc5ded45447915d96ef7ca3f02acf2232282e0

# Remove line-endings added by r320089. NFC.
100a0eedc00b2bf48bcdc6c209c000745a4a0e48

# Cleanup __config indention. NFC.
2b772b930e097ed6f06d698a51e291c7fd318baa

# Fixing whitespace problems
94b2dd0998230c758abd92c99d3700c971f7a31a

# Wiped out some non-ascii characters that snuck into the copyright.
5b08a8a43254ed30bd953e869b0fd9fc1e8b82d0

# Use C++11 default member initializers in LLDB. NFC.
9494c510af56d9c8593ab69017dcaa232210b235

# [libc++][NFC] clang-format <__config>
ac251726f84d5b7e6533a2e3712920184435b61b

# Python black reformatting, by subdir. NFC
b71edfaa4ec3c998aadb35255ce2f60bba2940b0
f84bac329ba6c9f0c022bcf77237e912362e247a
dd3c26a045c081620375a878159f536758baba6e
7bfaa0f09d0564f315ea778023b34b8a113ec740
f98ee40f4b5d7474fc67e82824bf6abbaedb7b1c
2238dcc39358353cac21df75c3c3286ab20b8f53
f9008e6366c2496b1ca1785b891d5578174ad63e

# [libc++][NFC] Apply clang-format on large parts of the code base
5aa03b648b827128d439f705cd7d57d59673741d

# [clang][NFC] Remove trailing whitespaces and enforce it in lib, include and docs
f6d557ee34b6bbdb1dc32f29e34b4a4a8ad35e81

# [libc++][NFC] clang-format <shared_mutex>
2d7eb9c9ea1a146412a83603d5c0c6339a5d8284

# [libc++] Rename _LIBCPP_INLINE_VISIBILITY to _LIBCPP_HIDE_FROM_ABI
4c198542226223f6a5c5511a1f89b37d15ee10b9

# [libc++] Replace uses of _VSTD:: by std:: (#74331)
77a00c0d546cd4aa8311b5b9031ae9ea8cdb050c

# [libc++] Format the code base (#74334)
9783f28cbb155e4a8d49c12e1c60ce14dcfaf0c7

# [RFC] compiler-rt builtins cleanup and refactoring
082b89b25faae3e45a023caf51b65ca0f02f377f
0ba22f51d128bee9d69756c56c4678097270e10b
84da0e1bb75f8666cf222d2f600f37bebb9ea389

# [NFC] clang-format utils/TableGen (#80973)
b9079baaddfed5e604fbfaa1d81a7a1c38e78c26

# [libc++][NFC] Run clang-format on libcxx/include again (#95874)
e2c2ffbe7a1b5d9e32a2ce64279475b50c4cba5b

# [lldb][nfc] Deindent ProcessGDBRemote::SetThreadStopInfo by two levels
b32931c5b32eb0d2cf37d688b34f8548c9674c19

# [libc++] Various consistency fixes to the CSV files that we use for tracking Standards Conformance
64946fdaf9864d8279da1c30e4d7214fe13d1427
b6262880b34629e9d7a72b5a42f315a3c9ed8139
39c7dc7207e76e72da21cf4fedda21b5311bf62d
e80bc777749331e9519575f416c342f7626dd14d
7e5cd8f1b6c5263ed5e2cc03d60c8779a8d3e9f7

# NFC: clang-format test_demangle.pass.cpp but keep test "lines"
d33bf2e9df578ff7e44fd22504d6ad5a122b7ee6

# [lldb][NFC] clang-format MainLoopPosix.cpp
66bdbfbaa08fa3d8e64a7fe136a8fb717f5cdbb7

# [clang-tidy][NFC] Run clang-format on "clang-tools-extra/clang-tidy"
65d66625b3e2b8322ed99d82edabecbafcd0885b
ce46adb8b7ce645353eccaedf31ed9765dab77bb
68070f908bb7ac5f0b5fa9722caa504ecf723f6b
5213c57cb1f0d78aad9a253b7f6a2b62ff4c7859

# [mlir] Update create method
9e7834cadf48292b5d127d6d98f9e6d565ed5d9a
284a5c2c0b97edddf255ea210f939203ad3d09f2
c090ed53fb73f59cf221f5610430af8047758117
fcbcfe44cff00101a6a98a73971398eb8dd87710
258daf539583b80e0217d1d87941412d65cf16aa
c610b244937ed847b0275ccb038c0f2d36310b4a
b58ad3650f2195117f484d551ffbada27e7d1e14
258d04c810ab10f101324cbf1fe3c7be65eb1938
a6bf40d1c6cf010b3ad90bf7f410983453f4deb2
dcfc853c51aecf6538182378c016f8e1604e7e97
3f74334c38120bbdefac012d478dfce8e4eb0906
a636b7bfdd1d8304b78e8b42ec900a21736d4afb
75aa7065dcf653de7870758cd502a7c714f4bcd7
2f5312563fd5cb2e355ec49109f3e63875337c7c
967626b842551ecd997c0d10eb68c3015b63a3d7
588845defd09359a8b87db339b563af848cf45a7
b0434925c98c9a8906afea60a1304c870b1f574a
8fff238b2c363b036ce9e7bf7abab3acafc87ab2
38976a03cd367b27437e0d1e81c0ccaee2777b47
eaa67a3cf041009ae33a45159d0465262c3af5dc
b0312be6aa664e4cb9abec6d080e971493093d05
2736fbd8324bf21a130c8abd4bd0e7d3aa840ac1
4ae9fdca8af095afd91705f8dd143e93b304b6fb
f904cdd6c3049e605d24ed17680e80e7133908a0
972ac59c9af4ad47af0b3542ae936b3470727e5f
7b787965431e666858fdf66db25ee5a129833927
c3823af156b517d926a56e3d0d585e2a15720e96
dce6679cf5cbbdaffb9c2b51dc762c5c6689ea78
9844ba6d9740206129b52633c555f767eaa45581
5547c6cd03ddddd405a09e51624e1f19955a85b1
a3a007ad5fa20abc90ead4e1030b481bf109b4cf
46f6df0848ea04449c6179ecdedc404ee5b5cf11
b7e332d3f59f567b1999fbcc660d7837cba8e406
6056f942abe83b05406df8b04e95ec37a3d160b5
906295b8a31c8dac5aa845864c0bca9f02f86184

# [clang-tidy][NFC] Remove trailing whitespaces in documentation
8f2b167de4a1268160c06512d08863a9e8f43290

# [clang-tidy][NFC] Enforce 80 characters limit in docs
5edf70c41c5d69f3751b4199f642f4585599dade
c73870dbe89a8219130e21a0b3f13df76d299352
74c40293c309dbd142bf1f0ebfbfde6be8d30655
a7ba8dcad76476478100c228a31d9c48391b1e03
