Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
10000 commits
Select commit Hold shift + click to select a range
9b62824
Merge commit '5a9103274ca0' from llvm.org/main into next
May 5, 2026
9f43ebe
Merge commit 'ab8e0f9d7fd1' from llvm.org/main into next
May 5, 2026
6a5cbc0
Merge commit '17cb2106f6f8' from llvm.org/main into next
May 5, 2026
9259d8a
Merge commit '2c35727e9679' from llvm.org/main into next
May 5, 2026
5c7dd99
Merge commit 'd38d8c6226fa' from llvm.org/main into next
May 5, 2026
a1b2476
Merge commit 'be8e0842a103' from llvm.org/main into next
May 5, 2026
8f6fd80
Merge commit 'f7329e61ad4b' from llvm.org/main into next
May 5, 2026
f8cb947
Merge commit '8889e8f85ddf' from llvm.org/main into next
May 5, 2026
999c32c
Merge commit '9cb00e1c2f11' from llvm.org/main into next
May 5, 2026
1c95b2d
Merge commit 'd9c7b6699b28' from llvm.org/main into next
May 5, 2026
de598bc
Merge commit '0d7ad3d4aff4' from llvm.org/main into next
May 5, 2026
49e9b21
Merge commit 'cd077bac8503' from llvm.org/main into next
May 5, 2026
c512473
Merge commit 'ec0ee3b51f22' from llvm.org/main into next
May 5, 2026
b2faf81
Merge commit '3a5f8ae67445' from llvm.org/main into next
May 5, 2026
fb17ebc
Merge commit '52340a4fa0a8' from llvm.org/main into next
May 5, 2026
2d302c8
Merge commit '1561e51af7d8' from llvm.org/main into next
May 5, 2026
6432607
Merge commit '5ef4320eed7c' from llvm.org/main into next
May 5, 2026
717291e
Merge commit 'fe3fd1e5ed76' from llvm.org/main into next
May 5, 2026
cc697fe
Merge commit 'c859a273b516' from llvm.org/main into next
May 5, 2026
48e0e51
Merge commit 'c24fc7175375' from llvm.org/main into next
May 5, 2026
8ef5cb3
Merge commit '94ca49099ef7' from llvm.org/main into next
May 5, 2026
7e35ee3
Merge commit 'dc79e2a9a1c6' from llvm.org/main into next
May 5, 2026
a1d1c0e
Merge commit '9fe04e0c52ca' from llvm.org/main into next
May 5, 2026
380bb3c
Merge commit 'a9a899db3e7c' from llvm.org/main into next
May 5, 2026
46a69cc
Merge commit '8b258206819d' from llvm.org/main into next
May 5, 2026
ed20f9d
Merge commit '2507314720b8' from llvm.org/main into next
May 5, 2026
4ab6d24
Merge commit 'a699b25b924c' from llvm.org/main into next
May 5, 2026
0ac9de5
Merge commit '15383dcdb401' from llvm.org/main into next
May 5, 2026
a59b21a
Merge commit '81518d06acaa' from llvm.org/main into next
May 5, 2026
0430e97
Merge commit '37f16ad24385' from llvm.org/main into next
May 5, 2026
bdd1432
Merge commit 'd1e84bb9ad3b' from llvm.org/main into next
May 5, 2026
69c2016
Merge commit '29dfc683a285' from llvm.org/main into next
May 5, 2026
6113f20
Merge commit 'e69e7f404c57' from llvm.org/main into next
May 5, 2026
fe63e1e
Merge commit '5f600666f80b' from llvm.org/main into next
May 5, 2026
fe11de4
Merge commit 'afb0a939c104' from llvm.org/main into next
May 5, 2026
cfe28c9
Merge commit 'c75e1e62d11b' from llvm.org/main into next
May 5, 2026
659cb72
Merge commit 'aeb14f780b17' from llvm.org/main into next
May 5, 2026
3f7cfe5
Merge commit '8442c9c417a5' from llvm.org/main into next
May 5, 2026
739bf87
Merge commit '3b9f8f03a0ba' from llvm.org/main into next
May 5, 2026
56cd1c5
Merge commit '8c77d0770d3e' from llvm.org/main into next
May 5, 2026
6786a77
Merge commit '857baf37de58' from llvm.org/main into next
May 5, 2026
db96ae9
Merge commit '8b8c271fc0ac' from llvm.org/main into next
May 5, 2026
ee66a7c
Merge commit 'aeb89698843f' from llvm.org/main into next
May 5, 2026
8fce564
Merge commit '4d093aa77563' from llvm.org/main into next
May 5, 2026
b476145
Merge commit '2b46fd5f6ed9' from llvm.org/main into next
May 5, 2026
c8740c2
Merge commit '305618b9ddc6' from llvm.org/main into next
May 5, 2026
c8620bd
Merge commit '471e1bdee332' from llvm.org/main into next
May 5, 2026
c17621a
Merge commit 'da855875ff6b' from llvm.org/main into next
May 5, 2026
248c097
Merge commit '811619567d93' from llvm.org/main into next
May 5, 2026
c743ab2
Merge commit '3efe6d48739e' from llvm.org/main into next
May 5, 2026
2627d51
Merge commit 'c25255783b58' from llvm.org/main into next
May 5, 2026
e000f6e
Merge commit '665984f5b327' from llvm.org/main into next
May 5, 2026
5125a27
Merge commit '0fd3e261e2fb' from llvm.org/main into next
May 5, 2026
fe84037
Merge commit '4e33a3b26ca2' from llvm.org/main into next
May 5, 2026
8449451
Merge commit '1a35a3fda67f' from llvm.org/main into next
May 5, 2026
5fa157e
Merge commit 'f8e13a9219f8' from llvm.org/main into next
May 5, 2026
d17759e
Merge commit '476bc22e852b' from llvm.org/main into next
May 5, 2026
cebc928
Merge commit 'e36d515590d8' from llvm.org/main into next
May 5, 2026
417ab02
Merge commit 'f48e77d49fae' from llvm.org/main into next
May 5, 2026
9d08f9b
Merge commit 'e6bb3b6c69d2' from llvm.org/main into next
May 5, 2026
924e6a2
Merge commit '7bae454bdb84' from llvm.org/main into next
May 5, 2026
97c6a18
Merge commit 'ca1f6cb61e9c' from llvm.org/main into next
May 5, 2026
65f5c64
Merge commit '54a1e2d5a588' from llvm.org/main into next
May 5, 2026
56e53c9
Merge commit '5213037d24b9' from llvm.org/main into next
May 5, 2026
1163da6
Merge commit '38013ad8fe94' from llvm.org/main into next
May 5, 2026
b48ad7b
Merge commit '66d41165ef10' from llvm.org/main into next
May 5, 2026
8e8bfe6
Merge commit '4de1fcaaeda6' from llvm.org/main into next
May 5, 2026
c1b5031
Merge commit '9928db4b6e3b' from llvm.org/main into next
May 5, 2026
e49f77d
Merge commit 'c080a3fcea94' from llvm.org/main into next
May 5, 2026
a31f1e0
Merge commit '4e3bac3ea2cc' from llvm.org/main into next
May 5, 2026
df2e967
Merge commit '800eba89ea7f' from llvm.org/main into next
May 5, 2026
4f01f66
Merge commit '4a15b8458b90' from llvm.org/main into next
May 5, 2026
b69ba4d
Merge commit 'f306525759ae' from llvm.org/main into next
May 5, 2026
6d25e0f
Merge commit 'fec54af42099' from llvm.org/main into next
May 5, 2026
44fd29e
Merge commit '6a8e7e4ffc6d' from llvm.org/main into next
May 5, 2026
4dcaced
Merge commit 'c19b9cf35a0f' from llvm.org/main into next
May 5, 2026
48cd58e
Merge commit '55124c4e604d' from llvm.org/main into next
May 5, 2026
81b7745
Merge commit '8a26ecc0b721' from llvm.org/main into next
May 5, 2026
7d42a39
Merge commit 'c6bf92e51d58' from llvm.org/main into next
May 5, 2026
3bc8fc7
Merge commit 'd27d0f08078a' from llvm.org/main into next
May 5, 2026
a095a3d
Merge commit 'b057c78db8ab' from llvm.org/main into next
May 5, 2026
d68a8dd
Merge commit 'bda0016aa2b4' from llvm.org/main into next
May 5, 2026
2719b18
Merge commit 'b8142ec5020b' from llvm.org/main into next
May 5, 2026
11a4cc7
Merge commit '4e32fa991ee2' from llvm.org/main into next
May 5, 2026
0ed5268
Merge commit 'c738bfa51edb' from llvm.org/main into next
May 5, 2026
983c33a
Merge commit 'a0330b38e160' from llvm.org/main into next
May 5, 2026
717ef89
Merge commit '0d1bd8566edc' from llvm.org/main into next
May 5, 2026
b614159
Merge commit 'da28d01eed17' from llvm.org/main into next
May 5, 2026
59539a7
Merge commit '5399086ac049' from llvm.org/main into next
May 5, 2026
4ce8cf6
Merge commit '75f884b96dfa' from llvm.org/main into next
May 5, 2026
7e86150
Merge commit 'e6d16760b0fe' from llvm.org/main into next
May 5, 2026
94237d8
Merge commit '8e341130d9c7' from llvm.org/main into next
May 5, 2026
f42d4fd
Merge commit '7a7efa27f315' from llvm.org/main into next
May 5, 2026
7f1daa3
Merge commit '7c9717848851' from llvm.org/main into next
May 5, 2026
ea292f7
Merge commit 'd7693e331ce9' from llvm.org/main into next
May 5, 2026
3032a12
Merge commit '90e17d269ee7' from llvm.org/main into next
May 5, 2026
191497c
Merge commit '3a02cca3a351' from llvm.org/main into next
May 5, 2026
38469d1
Merge commit 'dc516152188f' from llvm.org/main into next
May 5, 2026
e932653
Merge commit '98419d221539' from llvm.org/main into next
May 5, 2026
c6319e6
Merge commit '5b3fb5a319a4' from llvm.org/main into next
May 5, 2026
80a28ac
Merge commit 'b4321dc0f782' from llvm.org/main into next
May 5, 2026
df780e5
Merge commit '5bf5c6b9ef3c' from llvm.org/main into next
May 5, 2026
44a9b6a
Merge commit '33a4c4940c66' from llvm.org/main into next
May 5, 2026
4adf9f4
Merge commit 'a9810adef607' from llvm.org/main into next
May 5, 2026
ca1d6de
Merge commit '14912ccf3e91' from llvm.org/main into next
May 5, 2026
9d3bb0b
Merge commit '00ff3df6e8fd' from llvm.org/main into next
May 5, 2026
8f2d820
Merge commit '2b8c1178ddc4' from llvm.org/main into next
May 5, 2026
737ad85
Merge commit '06ecfa10b8b3' from llvm.org/main into next
May 5, 2026
b48dcf4
Merge commit 'fb3e804064c4' from llvm.org/main into next
May 5, 2026
b68e4ab
Merge commit '8af8a60d544a' from llvm.org/main into next
May 5, 2026
eb9147c
Merge commit '38f153c7a7f1' from llvm.org/main into next
May 5, 2026
35115ba
Merge commit '099245af4e70' from llvm.org/main into next
May 5, 2026
aa29b76
Merge commit '5cb2f3c51e00' from llvm.org/main into next
May 5, 2026
da77ea5
Merge commit 'ae9e4a54470a' from llvm.org/main into next
May 5, 2026
02f1539
Merge commit '859319117d00' from llvm.org/main into next
May 5, 2026
1f62011
Merge commit '9aec70548193' from llvm.org/main into next
May 5, 2026
95d93ca
Merge commit '03d600e92974' from llvm.org/main into next
May 5, 2026
b860813
Merge commit 'c3761b6ac6e2' from llvm.org/main into next
May 5, 2026
f0c7558
Merge commit 'c8b54a403a93' from llvm.org/main into next
May 5, 2026
160aa34
Merge commit '9376d9b0151d' from llvm.org/main into next
May 5, 2026
a37ce48
Merge commit '51d52c2a6cdc' from llvm.org/main into next
May 5, 2026
cbf0d68
Merge commit '814c054ef4f5' from llvm.org/main into next
May 5, 2026
a4d260d
Merge commit '9e095580756a' from llvm.org/main into next
May 5, 2026
b2d9dc8
Merge commit 'a6470d6dcf1c' from llvm.org/main into next
May 5, 2026
7fa59f7
Merge commit '07707707f21a' from llvm.org/main into next
May 5, 2026
2564f3c
Merge commit '7e44c07e60e0' from llvm.org/main into next
May 5, 2026
3fd0bab
Merge commit '5275e727e9ec' from llvm.org/main into next
May 5, 2026
3ec676e
Merge commit '1e835b3fe54f' from llvm.org/main into next
May 5, 2026
59e6dd5
Merge commit '9792c778d0fc' from llvm.org/main into next
May 5, 2026
73ccd09
Merge commit '01aefba75ddd' from llvm.org/main into next
May 5, 2026
046f5eb
Merge commit 'affe1324278f' from llvm.org/main into next
May 5, 2026
96b21e9
Merge commit '9aa55b291e6d' from llvm.org/main into next
May 5, 2026
108ee78
Merge commit 'b58f4ce4bde7' from llvm.org/main into next
May 5, 2026
ff40a8a
Merge commit 'cafb64410fd3' from llvm.org/main into next
May 5, 2026
4362c0b
Merge commit '5847857b5083' from llvm.org/main into next
May 5, 2026
06379e4
Merge commit '6e3ab87e38e7' from llvm.org/main into next
May 5, 2026
7d34a78
Merge commit '4f40fe10a4da' from llvm.org/main into next
May 5, 2026
8e8f241
Merge commit '4ae338ff2339' from llvm.org/main into next
May 5, 2026
ed7823b
Merge commit '53e3ca1612d9' from llvm.org/main into next
May 5, 2026
a75cf1b
Merge commit '7a3865728be1' from llvm.org/main into next
May 5, 2026
6ce6cce
Merge commit 'c1fceb3ab039' from llvm.org/main into next
May 5, 2026
790e92e
Merge commit '63b0e7379347' from llvm.org/main into next
May 5, 2026
2e148ef
Merge commit 'f68a900e8a8c' from llvm.org/main into next
May 5, 2026
db89ec2
Merge commit '3cbe75b1433a' from llvm.org/main into next
May 5, 2026
4e7fb5f
Merge commit '11317352614b' from llvm.org/main into next
May 5, 2026
947750d
Merge commit '0a62c541467e' from llvm.org/main into next
May 5, 2026
38660a2
Merge commit '88ec045b5bac' from llvm.org/main into next
May 5, 2026
cffe98d
Merge commit '11de06ef4e8e' from llvm.org/main into next
May 5, 2026
bed3272
Merge commit 'f8467698d8cd' from llvm.org/main into next
May 5, 2026
6afc39e
Merge commit 'cb2a64e7e5af' from llvm.org/main into next
May 5, 2026
eb317e0
Merge commit '2b430502a211' from llvm.org/main into next
May 5, 2026
2423039
Merge commit 'c4de38727ecb' from llvm.org/main into next
May 5, 2026
5cb0c33
Merge commit 'b5f4f16fd98c' from llvm.org/main into next
May 5, 2026
d31d005
Merge commit '94b475dae69c' from llvm.org/main into next
May 5, 2026
ff08736
Merge commit 'f81445e8badd' from llvm.org/main into next
May 5, 2026
ca96525
Merge commit 'e37ca02de897' from llvm.org/main into next
May 5, 2026
115b799
Merge commit 'a80d2a719374' from llvm.org/main into next
May 5, 2026
da7c9d9
Merge commit '239ca8d6c13a' from llvm.org/main into next
May 5, 2026
3c65206
Merge commit '852dd0d8df24' from llvm.org/main into next
May 5, 2026
2a9fab7
Merge commit '040c2b2101ba' from llvm.org/main into next
May 5, 2026
1d4dbb7
Merge commit '7c2c06ccfcfd' from llvm.org/main into next
May 5, 2026
4e2564e
Merge commit '8c8e0533f6ce' from llvm.org/main into next
May 5, 2026
b2b9132
Merge commit '444863607b31' from llvm.org/main into next
May 5, 2026
303b05f
Merge commit '2d5abf3f44eb' from llvm.org/main into next
May 5, 2026
9d02b41
Merge commit '00562c50f3f5' from llvm.org/main into next
May 5, 2026
1c0e6e0
Merge commit '81bdba1fee08' from llvm.org/main into next
May 5, 2026
b0a2467
Merge commit 'b907c1491c0a' from llvm.org/main into next
May 5, 2026
a478184
Merge commit '58d9781e8433' from llvm.org/main into next
May 5, 2026
3af680f
Merge commit '36b95facbc5f' from llvm.org/main into next
May 5, 2026
b070ec8
Merge commit 'd30d5fe8dd5d' from llvm.org/main into next
May 5, 2026
5673251
Merge commit 'c9d713aa48a7' from llvm.org/main into next
May 5, 2026
69d76af
Merge commit '32c654854637' from llvm.org/main into next
May 5, 2026
d9343a8
Merge commit 'b29636fd55ed' from llvm.org/main into next
May 5, 2026
79c682c
Merge commit '28360f7802d0' from llvm.org/main into next
May 5, 2026
2624a47
Merge commit '597111e13f58' from llvm.org/main into next
May 5, 2026
f3cc79a
Merge commit 'f634c2ba93f1' from llvm.org/main into next
May 5, 2026
c3e5943
Merge commit '531b8ac2d71a' from llvm.org/main into next
May 5, 2026
f52e8b4
Merge commit 'c91f835d7a87' from llvm.org/main into next
May 5, 2026
f2e64fe
Merge commit '78f193bc530b' from llvm.org/main into next
May 5, 2026
a376eb7
Merge commit 'e12c1081ad02' from llvm.org/main into next
May 5, 2026
f2e5024
Merge commit '40cdfd26497e' from llvm.org/main into next
May 5, 2026
7310213
Merge commit 'ed07c92c9629' from llvm.org/main into next
May 5, 2026
2cf85b3
Merge commit '1f8efdce543c' from llvm.org/main into next
May 5, 2026
a0b60a7
Merge commit '6d8d7d00a6de' from llvm.org/main into next
May 5, 2026
f1550b0
Merge commit 'fc00af7debd7' from llvm.org/main into next
May 5, 2026
df0d856
Merge commit '39ee115e9215' from llvm.org/main into next
May 5, 2026
e688740
Merge commit '31d1ce8f640c' from llvm.org/main into next
May 5, 2026
fca840b
Merge commit 'cfdec0ef936d' from llvm.org/main into next
May 5, 2026
b824ecc
Merge commit '3a5c7a70c8cf' from llvm.org/main into next
May 5, 2026
c6c23dc
Merge commit '6e27684e8f2a' from llvm.org/main into next
May 5, 2026
cd92885
Merge commit 'a3c18c0e594a' from llvm.org/main into next
May 5, 2026
8529efe
Merge commit 'f3f0830e4428' from llvm.org/main into next
May 5, 2026
64a5b61
Merge commit '17c084c4f7d6' from llvm.org/main into next
May 5, 2026
4aa9599
Merge commit 'f5c52a03063b' from llvm.org/main into next
May 5, 2026
9a2391e
Merge commit 'ae9f1ead6b27' from llvm.org/main into next
May 5, 2026
ab67c1d
Merge commit 'cc0d0f475b26' from llvm.org/main into next
May 5, 2026
8b16f66
Merge commit '3d555a93f0fd' from llvm.org/main into next
May 5, 2026
db593e0
Merge commit 'b2e063bf37f4' from llvm.org/main into next
May 5, 2026
2067fb4
Merge commit '462b60ba14f2' from llvm.org/main into next
May 5, 2026
5b71acc
Merge commit 'e036243db8b0' from llvm.org/main into next
May 5, 2026
608c079
Merge commit 'fcaa4d05a001' from llvm.org/main into next
May 5, 2026
357c055
Merge commit '0c274303e358' from llvm.org/main into next
May 5, 2026
a60799b
Merge commit '9db9f6d9c985' from llvm.org/main into next
May 5, 2026
e81ab6d
Merge commit 'fe2138d9ec79' from llvm.org/main into next
May 5, 2026
62ffb89
Merge commit '5016e34cb7cd' from llvm.org/main into next
May 5, 2026
b994e1b
Merge commit '11d15c38c10e' from llvm.org/main into next
May 5, 2026
55deaa8
Merge commit '5f0024f249f9' from llvm.org/main into next
May 5, 2026
faf38f7
Merge commit 'bb51440ffe69' from llvm.org/main into next
May 5, 2026
a88a27d
Merge commit '4dcb76104120' from llvm.org/main into next
May 5, 2026
9af1b99
Merge commit '3395046bc37d' from llvm.org/main into next
May 5, 2026
4a609f8
Merge commit '58f94f0a4648' from llvm.org/main into next
May 5, 2026
51f0018
Merge commit 'a62b65ea6ca0' from llvm.org/main into next
May 5, 2026
29e7e4d
Merge commit 'f3294c2338d2' from llvm.org/main into next
May 5, 2026
c2dd38b
Merge commit '8be29edc20df' from llvm.org/main into next
May 5, 2026
3f9cf61
Merge commit '00cb7fbc5be9' from llvm.org/main into next
May 5, 2026
5b521fe
Merge commit '07087191ac92' from llvm.org/main into next
May 5, 2026
4191fd6
Merge commit 'c05e809430c6' from llvm.org/main into next
May 5, 2026
2cbe056
Merge commit '9ca29d7dcede' from llvm.org/main into next
May 5, 2026
0f3d79b
Merge commit 'ad3bb7502bbc' from llvm.org/main into next
May 5, 2026
de8b096
Merge commit 'bed163e8ac77' from llvm.org/main into next
May 5, 2026
e690758
[Test][CAS] Add type: to bare DISubprogram nodes in dwarf-5.ll
cachemeifyoucan May 5, 2026
691fa85
[Test][BoundsSafety] Add nosync to memcpy attribute CHECK lines
cachemeifyoucan May 5, 2026
f9010ef
[Test][BoundsSafety] Add external-linkage to AST dump CHECK lines
cachemeifyoucan May 5, 2026
177c35f
Merge commit '8a0c5d3f43b2' from llvm.org/main into next
May 5, 2026
556c68f
Merge commit 'f9ebcea704e8' from llvm.org/main into next
May 5, 2026
c5dae35
Merge commit '868be24614d6' from llvm.org/main into next
May 5, 2026
38ff1b1
Merge commit '6af0cbfe009a' from llvm.org/main into next
May 5, 2026
355a74a
Merge commit 'f23c4074717b' from llvm.org/main into next
May 5, 2026
65e65e4
Merge commit 'ea6b7f8a55f9' from llvm.org/main into next
May 5, 2026
035b40c
Merge commit '6f5570caa3a3' from llvm.org/main into next
May 5, 2026
6ad0060
Merge commit '176dff4a5afd' from llvm.org/main into next
May 5, 2026
f7798cb
Merge commit 'ab7cec9437e5' from llvm.org/main into next
May 5, 2026
47a0a7a
Merge commit 'e4e41984bd92' from llvm.org/main into next
May 5, 2026
77f653d
Merge commit '7c3077279f73' from llvm.org/main into next
May 5, 2026
a31bb79
Merge commit '42c326725df4' from llvm.org/main into next
May 5, 2026
c67ecfa
Merge commit 'a6f40eed9b4c' from llvm.org/main into next
May 5, 2026
3440e51
Merge commit '0e0c9a5c782e' from llvm.org/main into next
May 5, 2026
dfc72fe
Merge commit '86b346da50a6' from llvm.org/main into next
May 5, 2026
2470e17
Merge commit '8ec6a2d9197a' from llvm.org/main into next
May 5, 2026
54b2d1a
Merge commit '7ff811a88e31' from llvm.org/main into next
May 5, 2026
1c81083
Merge commit '75b3226c3e67' from llvm.org/main into next
May 5, 2026
46adee3
Merge commit 'e339ed1806ec' from llvm.org/main into next
May 5, 2026
a382015
Merge commit '09abee845d21' from llvm.org/main into next
May 5, 2026
01b8844
Merge commit '35117920811b' from llvm.org/main into next
May 5, 2026
539a7f6
Merge commit '81d3c1913701' from llvm.org/main into next
May 5, 2026
e9354e9
Merge commit '841188658f46' from llvm.org/main into next
May 5, 2026
eb5d041
Merge commit '9cf264f6baa7' from llvm.org/main into next
May 5, 2026
6fe5ad5
[clang][TMO] Initial upstreaming of type aware allocator support (#12…
ojhunt May 5, 2026
3763bf0
Merge commit 'e63548e1c84c' from llvm.org/main into next
May 5, 2026
4047758
[clang] Add invoke-ssaf to driver feature availability list
t-rasmud May 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@
/clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp @lanza @bcardosolopes @xlauko @andykaylor @banach-space
/clang/tools/cir-* @lanza @bcardosolopes @xlauko @andykaylor

# BEGIN SWIFT
/lldb/**/*Swift* @adrian-prantl
# END SWIFT
/lldb/ @JDevlieghere
/lldb/**/*FreeBSD* @mchoo7

Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
#macOS specific
.DS_Store

# Temporary file created by the automerger tool.
.am.txt

# Ignore the user specified CMake presets in subproject directories.
/*/CMakeUserPresets.json

Expand Down
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
# Swift's fork of llvm-project

This is Swift's fork of llvm-project. For more information on Swift's
branching scheme, please see
[apple-docs/AppleBranchingScheme.md](https://github.com/apple/llvm-project/tree/apple/main/apple-docs/AppleBranchingScheme.md).

The LLVM project's main README follows.

# The LLVM Compiler Infrastructure

[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/llvm/llvm-project/badge)](https://securityscorecards.dev/viewer/?uri=github.com/llvm/llvm-project)
Expand Down
363 changes: 363 additions & 0 deletions apple-ci/amtool
Original file line number Diff line number Diff line change
@@ -0,0 +1,363 @@
#!/usr/bin/env python3
"""
Tool to reproduce and resolve the issues reported by the automerger.
"""

import argparse
import json
import logging
import os
import shlex
import subprocess
import sys
from typing import List, Optional

log = logging.getLogger()

REMOTE = 'git@github.com:swiftlang/llvm-project.git'

class GitError(Exception):
"""
An exception thrown if the git command failed.

Attributes
----------
args : List[str]
The list of arguments passed to `git`.
returncode : int
The exit code of the `git` process.
stdout : str
The output of `git`.
stderr : str
The error output of `git`.
"""

def __init__(self, args, returncode: int, stdout: str, stderr: str):
self.args = args
self.returncode = returncode
self.stdout = stdout
self.stderr = stderr

def __repr__(self):
return f'GitError({self.args}, {self.returncode}, "{self.stdout}", "{self.stderr}")'


def _git_to_str(args: List[str]):
return 'git ' + ' '.join(map(lambda arg: shlex.quote(arg), args))


def invoke(*cmd, git_dir: Optional[str] = None,
stdin: Optional[str] = None,
stdout=None,
stderr=subprocess.PIPE,
strip: bool = True, ignore_error: bool = False,
timeout: Optional[int] = None):
""" Invokes a git subprocess with the passed string arguments and return
the stdout of the git command as a string if text otherwise a file
handle.
"""
if git_dir is not None:
all_args = ['-C', git_dir] + list(cmd)
else:
all_args = list(cmd)
log.debug('$ %s', _git_to_str(all_args))
p = subprocess.Popen(['git'] + all_args,
stdout=stdout,
stderr=stderr,
stdin=subprocess.PIPE if stdin else None,
universal_newlines=True)
out, err = p.communicate(input=stdin, timeout=timeout)
if p.returncode == 0:
if out:
if strip:
out = out.rstrip()
for line in out.splitlines():
log.debug('STDOUT: %s', line)
if err:
for line in err.rstrip().splitlines():
log.debug('STDERR: %s', line)
return out
log.debug('EXIT STATUS: %d', p.returncode)
if err:
for line in err.rstrip().splitlines():
log.debug('STDERR: %s', line)
if ignore_error:
return None
raise GitError(all_args, p.returncode, out, err)


def git(*cmd, **kwargs):
""" Invokes a git subprocess with the passed string arguments and return
the stdout of the git command.
"""
return invoke(*cmd, **kwargs, stdout=subprocess.PIPE)


class Commit:
""" Represents the commit being merged."""
def __init__(self, sha: str):
self.sha = sha

def short_sha(self):
return self.sha[0:12]

def get_previous_commit(self):
return git('rev-parse', self.sha + '^')


class MergeId:
""" Encapsulates the merge ID constructed by the automerger and the
corresponding git operations.
"""
prefix = 'refs/am'

def __init__(self, merge_id: str):
self.merge_id = merge_id
parts = merge_id.split('_')
try:
self.commit = Commit(parts[0])
self.target_branch = '/'.join(parts[1:])
except IndexError:
log.error("Merge Id not correctly formed.")

@property
def ref_name(self):
return self.prefix + "/changes/" + self.merge_id

@property
def merge_candidate_ref_name(self):
return self.prefix + "/merge-candidate/" + self.merge_id

def get_previous_merge_id(self):
previous_commit = self.commit.get_previous_commit()
return MergeId(self.merge_id.replace(self.commit.sha, previous_commit))

@staticmethod
def fetch(*args):
"""Helper function for the "git fetch" command."""
try:
git('fetch', *args)
return True
except GitError as e:
if e.returncode == 128:
return False
raise e

def fetch_ref_name(self):
refspec = self.ref_name + ":" + self.ref_name
return self.fetch(REMOTE, self.target_branch, refspec)

def fetch_merge_candidate_ref_name(self):
refspec = "+" + self.merge_candidate_ref_name + ":" + self.merge_candidate_ref_name
return self.fetch(REMOTE, refspec)

@staticmethod
def checkout(*args):
"""Helper function for the "git checkout" command."""
try:
git('checkout', *args)
return (True, '')
except GitError as e:
return (False, e.stderr)

def checkout_merge_candidate(self):
"""Checkout the merge candidate for this merge ID."""
return self.checkout(self.merge_candidate_ref_name)

def checkout_target_branch(self):
"""Checkout the target branch for this merge ID."""
if self.fetch(REMOTE, self.target_branch):
return self.checkout('FETCH_HEAD')
return (False, '')

def get_source_branch_name(self):
"""Get the source branch name (upstream) for this target branch."""
content = None
if self.fetch(REMOTE, 'repo/apple-llvm-config/am'):
content = git('cat-file', '-p',
'FETCH_HEAD:apple-llvm-config/am/am-config.json')
if not content:
return None
config = json.loads(content)
if not config:
return None
for json_dict in config:
if json_dict['target'] == self.target_branch:
return json_dict['upstream']
return None

def merge(self):
source_branch = self.get_source_branch_name()
if not source_branch:
log.error(f"Could not figure out the source branch for {self.target_branch}.")
try:
git('merge', '--no-edit', "-X", "diff-algorithm=histogram",
"--summary", self.ref_name, '-m',
f"Merge commit '{self.commit.short_sha()}' from {source_branch} into {self.target_branch}")
return True
except GitError as e:
if 'CONFLICT' in e.stdout:
return False
raise e

def push(self):
try:
git('push', REMOTE, f'HEAD:{self.ref_name}')
return (True, '')
except GitError as e:
return (False, e.stdout)


def parse_args():
"""Parse the command line arguments."""

parser = argparse.ArgumentParser(description="Automerger Tool")
parser.add_argument('-v', '--verbose', action='store_true', required=False,
help='enable verbose outout and show commands being run')

subparsers = parser.add_subparsers(dest='command', required=True,
help='the command to run')
# Reproduce
parser_reproduce = subparsers.add_parser('reproduce',
help='Reproduce the issue observed when performing merge')
parser_reproduce.add_argument('id', help='the merge ID to reproduce')
# Push
parser_push = subparsers.add_parser('push',
help='push the resolution, so that the automerger can pick it up')
# Override push uncommitted change error
parser_push.add_argument('--ignore-uncommitted-changes', dest='ignore_uncommitted',
action='store_true', required=False,
help='allowing pushing a commit even if uncommitted changes exist')

args = parser.parse_args()
return args


def main():
args = parse_args()

# Default to INFO level. Increase to DEBUG level if verbose flag passed.
log_level = logging.INFO
if args.verbose:
log_level = logging.DEBUG

log.setLevel(log_level)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(log_level)
# create formatter and add it to the handlers
ch_fomatter = logging.Formatter('%(levelname)s: %(message)s')
ch.setFormatter(ch_fomatter)
# add the handlers to the logger
log.addHandler(ch)

# File to record the merge ID locally so we can use it in the `push`
# command without having the user enter it again.
record = '.am.txt'

# Reproduce mode.
if args.command == "reproduce":
log.info('Attempting to reproduce the issue.')
merge_id = MergeId(args.id)

# Record the ref locally so we can use it in the `push` command
# without having the user enter it again.
with open(record, 'w') as f:
f.write(args.id)

# Fetch the ref. If we failed to fetch then just return because it is
# likely that the commit has already been merged and the ref deleted.
log.info('Fetching the ref and the target branch ...')
status = merge_id.fetch_ref_name()
if not status:
log.error('Unable to fetch the ref. Are you in the right repo? Or, is it already merged?')
return 1
log.info('Successfully fetched.')

# Fetch the merge candidate ref for the previous commit and check it
# out in order to apply this commit on top of it. This allows us to
# reproduce just this issue and not any other issues in the prior
# commits which have not been merged yet.
# If we failed to fetch then it is likely that the previous commit has
# already been merged. Checkout the target branch in that case.
previous_merge_id = merge_id.get_previous_merge_id()
log.info('Fetching the previous commit ...')
status = previous_merge_id.fetch_merge_candidate_ref_name()
if not status:
log.info('Previous commit already merged. Checking out the target branch instead.')
status, msg = merge_id.checkout_target_branch()
if not status:
log.error('Failed to checkout.')
log.error(msg)
return 1
log.info('Successfully checked out the target branch.')
else:
log.info('Successfully fetched.')
log.info('Now checking out the previous commit.')
status, msg = previous_merge_id.checkout_merge_candidate()
if not status:
log.error('Failed to checkout.')
log.error(msg)
return 1
log.info('Successfully checked out the previous commit.')

# Perform the merge.
log.info('Performing the merge ...')
rc = merge_id.merge()
if not rc:
log.info('Please resolve the conflicts and push the merge commit.')
return 0
log.info('No merge conflict seen. Is this a build/test failure?')
log.info('Please resolve the issue and push the commit.')
return 0

# Push mode.
elif args.command == "push":
# Read the ref saved locally by the `reproduce` command.
try:
with open(record, 'r') as f:
content = f.read()
except FileNotFoundError:
log.error('Did you run the `reproduce` command before?')
return 1
log.debug(f'Content : {content}')

# Check if we happen to be still in the middle of the merge.
# Proceed to push if otherwise the merge has been concluded.
try:
git('rev-parse', '--verify', '--quiet', 'MERGE_HEAD')
log.error('Looks like you are in the middle of the merge.')
log.error('Please conclude the merge before pushing.')
return 1
except GitError:
pass

# Check if we have any unstaged or uncommitted changes in the tree.
if len(git('diff-index', 'HEAD')):
if args.ignore_uncommitted:
log.warning('Ignoring uncommitted changes.')
else:
log.error('Looks like you have unstaged or uncommitted changes.')
log.error('Please make sure everything has been added to the commit.')
log.error('Use `--ignore-uncommitted-changes` to ignore, and push anyway.')
return 1

# Save the commit sha so that we can include it in the output message.
merge_commit = git('rev-parse', 'HEAD')

# Perform the push.
merge_id = MergeId(content)
log.info("Pushing ...")
status, msg = merge_id.push()
if not status:
log.error('Failed to push.')
log.error(msg)
return 1
log.info(f'Successfully pushed `{merge_commit}`.')

# Clean up.
os.remove(record)


if __name__ == '__main__':
sys.exit(main())
Loading
Loading