Skip to content

[CodeExtractor] Optionally keep code in original function. #114669

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 333 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
333 commits
Select commit Hold shift + click to select a range
b6dc69b
extracted emitReplacerCall
Meinersbur Dec 6, 2021
e381872
extracted insertReplacer
Meinersbur Dec 6, 2021
2c71618
clang-format
Meinersbur Dec 6, 2021
9092507
WIP
Meinersbur Dec 6, 2021
8e80131
cleaning up
Meinersbur Dec 7, 2021
f723df5
fixing PHIs
Meinersbur Dec 7, 2021
6b59af7
cleaning up
Meinersbur Dec 7, 2021
6aa65a3
cleaning up
Meinersbur Dec 7, 2021
bd3a288
cleaning up
Meinersbur Dec 7, 2021
827cf17
clang-format
Meinersbur Dec 7, 2021
c8d067f
Keep only SwitchCases
Meinersbur Dec 7, 2021
35dd894
Undo unnecessary change
Meinersbur Dec 7, 2021
d394e0e
cundo changes/format
Meinersbur Dec 7, 2021
0dfd685
clang-format
Meinersbur Dec 7, 2021
eb8c6a3
KeepOldBlocks
Meinersbur Dec 7, 2021
80a0c15
Merge branch 'main' into irbuilder-extract-refactor
Meinersbur Mar 31, 2022
2702100
[CodeRefactor] rebase
Meinersbur Mar 31, 2022
974072d
some simplification/comments
Meinersbur Mar 31, 2022
26c9070
Merge branch 'irbuilder-extract' into HEAD
Meinersbur Mar 31, 2022
d3a9fc9
Fix after merge conflicts
Meinersbur Mar 31, 2022
bb0043a
clang-format
Meinersbur Mar 31, 2022
deb90ca
Merge branch 'irbuilder-extract' into HEAD
Meinersbur Apr 13, 2022
573017f
Merge branch 'main' into irbuilder-extract-refactor
Meinersbur Apr 13, 2022
82db5d3
Merge branch 'irbuilder-extract-refactor' into irbuilder-extract
Meinersbur Apr 13, 2022
d59c976
Address review
Meinersbur Apr 13, 2022
c8154b2
Merge branch 'irbuilder-extract' into HEAD
Meinersbur Apr 20, 2022
09c8983
Merge branch 'main' into irbuilder-extract-refactor
Meinersbur Apr 20, 2022
919b27c
Merge branch 'irbuilder-extract-refactor' into irbuilder-extract
Meinersbur Apr 20, 2022
ead347b
Introduce --replace-with call to replace --bb-keep-functions and --bb…
Meinersbur Apr 20, 2022
f280bdb
Merge branch 'irbuilder-extract-refactor' into HEAD
Meinersbur Nov 11, 2022
7d5bbda
Avoid deprecation warnings
Meinersbur Nov 11, 2022
d1dc14f
Use range-for
Meinersbur Nov 11, 2022
cb8dae6
Merge branch 'main' into HEAD
Meinersbur Nov 11, 2022
e2d1e21
NumExitBlocks -> SwitchCases.size()
Meinersbur Nov 11, 2022
179252f
clang-format
Meinersbur Nov 11, 2022
f1ef796
Add alloca block test
Meinersbur Nov 11, 2022
a80f7a6
clang-format
Meinersbur Nov 11, 2022
853d6db
rename to recomputeSwitchCases
Meinersbur Nov 11, 2022
3996391
refactor getSwitchType
Meinersbur Nov 11, 2022
b878fe0
clang-format
Meinersbur Nov 11, 2022
7fa2a83
erge commit '343de6856e16b58bcbd16d479fc633f54e22fadc^' into users/me…
Meinersbur Nov 1, 2024
ac29f5e
Merge commit '343de6856e16b58bcbd16d479fc633f54e22fadc' into users/me…
Meinersbur Nov 1, 2024
bd5589d
Merge commit '62b27f893ecceade799df80b343d00851db250ba^' into users/m…
Meinersbur Nov 1, 2024
5c8a548
Merge commit '62b27f893ecceade799df80b343d00851db250ba' into users/me…
Meinersbur Nov 1, 2024
44889ac
Merge commit '934942c0331a078acc9350dc3ba7790a0e2698a8^' into users/m…
Meinersbur Nov 1, 2024
092e165
Merge commit '934942c0331a078acc9350dc3ba7790a0e2698a8' into users/me…
Meinersbur Nov 1, 2024
74f8fa4
Merge commit '60f406c4db5ba1ed6d66567ddaef4b86386496e1^' into users/m…
Meinersbur Nov 1, 2024
306c458
Merge commit '60f406c4db5ba1ed6d66567ddaef4b86386496e1' into users/me…
Meinersbur Nov 1, 2024
e548fff
Merge commit 'd23b7f5f9f4adf1f12c268771055ba1c8ce6e01b^' into users/m…
Meinersbur Nov 1, 2024
a743b60
Merge commit 'd23b7f5f9f4adf1f12c268771055ba1c8ce6e01b' into users/me…
Meinersbur Nov 1, 2024
c779b65
Merge commit '79d59c3f3e8abb66a758793bfd9acd8ea6b3d92b^' into users/m…
Meinersbur Nov 1, 2024
58195d3
Merge commit '79d59c3f3e8abb66a758793bfd9acd8ea6b3d92b' into users/me…
Meinersbur Nov 1, 2024
9565b27
Merge commit 'b432dd2d4b75847cc51bd3d4b41f4d71ca9bf0bd' into users/me…
Meinersbur Nov 1, 2024
0e549c0
Merge commit 'cde2cc9a8f46acfa1f92b127de28748943dc2de8' into users/me…
Meinersbur Nov 1, 2024
1762c29
Merge commit '06911ba6ea1e552d3bcaed2728c92a9aa6cbf4d2^' into users/m…
Meinersbur Nov 1, 2024
5eaf8a2
Merge commit '06911ba6ea1e552d3bcaed2728c92a9aa6cbf4d2' into users/me…
Meinersbur Nov 1, 2024
d79fe0e
Backport applied merge
Meinersbur Nov 1, 2024
419fe95
Merge commit 'a19ae77d2a9016428fee7cd5af03fd20ad6d4464^' into users/m…
Meinersbur Nov 1, 2024
faf3ec6
Merge commit 'a19ae77d2a9016428fee7cd5af03fd20ad6d4464' into users/me…
Meinersbur Nov 1, 2024
4a1be01
Merge commit '80f2f1eabc491cde39d543e4ebda93e2d2974d1f^' into users/m…
Meinersbur Nov 1, 2024
9d8e570
Merge commit '80f2f1eabc491cde39d543e4ebda93e2d2974d1f' into users/me…
Meinersbur Nov 1, 2024
e60abd8
Merge commit '32b38d248fd3c75abc5c86ab6677b6cb08a703cc^' into users/m…
Meinersbur Nov 1, 2024
66282ed
Merge commit '32b38d248fd3c75abc5c86ab6677b6cb08a703cc' into users/me…
Meinersbur Nov 1, 2024
67acce7
apply insertAt->insertInto
Meinersbur Nov 1, 2024
d1d4132
Merge commit 'fb8eb84e5fd0b3219bd89522cceee3a8e128a85f^' into users/m…
Meinersbur Nov 1, 2024
36ce773
Merge commit 'fb8eb84e5fd0b3219bd89522cceee3a8e128a85f' into users/me…
Meinersbur Nov 1, 2024
22fa0b3
Re-apply last merge changes
Meinersbur Nov 1, 2024
e1acf65
Merge commit 'f9599bbc7a3f831e1793a549d8a7a19265f3e504^' into users/m…
Meinersbur Nov 1, 2024
8777a07
Merge commit 'f9599bbc7a3f831e1793a549d8a7a19265f3e504' into users/me…
Meinersbur Nov 1, 2024
72bd2da
Merge commit '0cbb8ec030e23c0e13331b5d54155def8c901b36^' into users/m…
Meinersbur Nov 1, 2024
de44f8c
Merge commit '0cbb8ec030e23c0e13331b5d54155def8c901b36' into users/me…
Meinersbur Nov 1, 2024
4add729
Merge commit '5da674492a5acf8e08a58f611e39ff4cd6a16dfe^' into users/m…
Meinersbur Nov 1, 2024
1d5937b
erge commit '5da674492a5acf8e08a58f611e39ff4cd6a16dfe' into users/mei…
Meinersbur Nov 1, 2024
dd699c1
Merge commit '6942c64e8128e4ccd891b813d0240f574f80f59e^' into users/m…
Meinersbur Nov 1, 2024
ee48944
Merge commit '6942c64e8128e4ccd891b813d0240f574f80f59e' into users/me…
Meinersbur Nov 1, 2024
4fced02
Merge commit '5064ca8b591315b628120f67de0411f8e20f2e8f^' into users/m…
Meinersbur Nov 1, 2024
3e9219c
Merge commit '5064ca8b591315b628120f67de0411f8e20f2e8f' into users/me…
Meinersbur Nov 1, 2024
e086736
Merge commit '5181156b3743df29dc840e15990d9202b3501f60^' into users/m…
Meinersbur Nov 1, 2024
2060d9a
Re-apply merge
Meinersbur Nov 1, 2024
8be7ac4
Merge commit 'df3478e480b3b2e9fe125697b7931dc48b09e450^' into users/m…
Meinersbur Nov 1, 2024
2f5752b
Merge commit 'df3478e480b3b2e9fe125697b7931dc48b09e450' into users/me…
Meinersbur Nov 1, 2024
64c7171
Merge commit 'eee8dd90887cbf86fa0fea1ff770377a87af0257^' into users/m…
Meinersbur Nov 1, 2024
376df21
Merge commit 'eee8dd90887cbf86fa0fea1ff770377a87af0257' into users/me…
Meinersbur Nov 1, 2024
34cdd8c
merge fix
Meinersbur Nov 1, 2024
66465ed
Merge commit '6b8ed78719d0ae8eff55b937a976602f3a748697^' into users/m…
Meinersbur Nov 1, 2024
f628802
Merge commit '6b8ed78719d0ae8eff55b937a976602f3a748697' into users/me…
Meinersbur Nov 1, 2024
0c6b352
Merge commit '7b9d73c2f90c0ed8497339a16fc39785349d9610^' into users/m…
Meinersbur Nov 1, 2024
63c0c1a
Merge commit '7b9d73c2f90c0ed8497339a16fc39785349d9610' into users/me…
Meinersbur Nov 1, 2024
b697d9a
Merge commit 'b7b5907b56e98719b1dba8364ebcfb264fc09bfe^' into users/m…
Meinersbur Nov 1, 2024
c9e3520
Merge commit 'b7b5907b56e98719b1dba8364ebcfb264fc09bfe' into users/me…
Meinersbur Nov 1, 2024
a90631d
Merge commit '3bf72bf427f15521111df4e35c868005ceb0013b^' into users/m…
Meinersbur Nov 1, 2024
bf3db9b
Merge commit '3bf72bf427f15521111df4e35c868005ceb0013b' into users/me…
Meinersbur Nov 2, 2024
6979662
Merge commit 'bf5d96c96c40e485327e8ddf4fb8f0ddae859e6f^' into users/m…
Meinersbur Nov 2, 2024
16912a9
Merge commit 'bf5d96c96c40e485327e8ddf4fb8f0ddae859e6f' into users/me…
Meinersbur Nov 2, 2024
4619a32
Merge commit 'd041af3019984f505530bac3acb94ca2f13f33cd^' into users/m…
Meinersbur Nov 2, 2024
ea7f998
Merge commit 'd041af3019984f505530bac3acb94ca2f13f33cd' into users/me…
Meinersbur Nov 2, 2024
5e1ffdd
Merge commit '632f44e5edee6395ef26953d41a0e681a121aad3^' into users/m…
Meinersbur Nov 2, 2024
7f3d338
Merge commit '632f44e5edee6395ef26953d41a0e681a121aad3' into users/me…
Meinersbur Nov 2, 2024
7629cef
Merge commit '1833de3ee364a996d03bb23b19fe472e3e2ddf3b^' into users/m…
Meinersbur Nov 2, 2024
6b77154
Merge commit '1833de3ee364a996d03bb23b19fe472e3e2ddf3b' into users/me…
Meinersbur Nov 2, 2024
e0f9f26
Merge commit 'ababa964752d5bfa6eb608c97f19d4e68df1d243^' into users/m…
Meinersbur Nov 2, 2024
2af4152
Merge commit '6b62a9135a28bd001263e5a9db08d4cff1123126' into users/me…
Meinersbur Nov 2, 2024
fc5ea7e
Insert instructions using iterators
Meinersbur Nov 2, 2024
1bb4d26
Merge commit 'e0d49066c1acfa4ae0f0e8ea49b0f0b6bb3f1a25^' into users/m…
Meinersbur Nov 2, 2024
c286985
Merge commit 'e0d49066c1acfa4ae0f0e8ea49b0f0b6bb3f1a25' into users/me…
Meinersbur Nov 2, 2024
6635f3e
Merge commit '0861755e597e671424ee369f36dff5591b7178ee^' into users/m…
Meinersbur Nov 2, 2024
25ee1b8
Merge commit '0861755e597e671424ee369f36dff5591b7178ee' into users/me…
Meinersbur Nov 2, 2024
13e85f8
Merge commit '40282674e9808baeb9b88afdd3cbd7da46825544^' into users/m…
Meinersbur Nov 2, 2024
fd26f43
Merge commit '40282674e9808baeb9b88afdd3cbd7da46825544' into users/me…
Meinersbur Nov 2, 2024
0ff97dc
Merge commit '15f3f446c504d1bb85282fb3bd98db6eab69829d^' into users/m…
Meinersbur Nov 2, 2024
5b2556a
Merge commit '15f3f446c504d1bb85282fb3bd98db6eab69829d' into users/me…
Meinersbur Nov 2, 2024
fcbebc0
Merge commit 'ff63d628c46459437df21e09f70993685eba4bc3^' into users/m…
Meinersbur Nov 2, 2024
f825999
Merge commit 'ff63d628c46459437df21e09f70993685eba4bc3' into users/me…
Meinersbur Nov 2, 2024
b1b4fc1
Re-apply
Meinersbur Nov 2, 2024
3ed964e
Merge commit 'ffd08c7759000f55332f1657a1fab64a7adc03fd' into users/me…
Meinersbur Nov 2, 2024
801ea1b
Merge commit 'bdc77d1ecc9219dfc641aaaa4fb088233e9a32d1' into users/me…
Meinersbur Nov 2, 2024
f9f1665
Merge commit 'ce73b1672a6053d5974dc2342881aac02efe2dbb^' into users/m…
Meinersbur Nov 2, 2024
8f1538f
Merge commit 'ce73b1672a6053d5974dc2342881aac02efe2dbb' into users/me…
Meinersbur Nov 2, 2024
827626e
Merge commit '91d7ca904c601d181c431bffbf2773165de2fabd' into users/me…
Meinersbur Nov 2, 2024
d6ac280
Merge commit 'c4f8ae6f32dadf9383c94ed13152d91f68631255' into users/me…
Meinersbur Nov 2, 2024
e8857fd
Merge commit '5ece35df8586d0cb8c104a9f44eaae771de025f5' into users/me…
Meinersbur Nov 2, 2024
206f353
Merge commit '6cc8774228a4162ebadfa636086a171f82e51a8c' into users/me…
Meinersbur Nov 2, 2024
6988226
Merge commit 'b143b2483fc5d7e73763ff9292dec6479552de9e' into users/me…
Meinersbur Nov 2, 2024
d0475d9
Merge commit 'fa658ac7913408d5ec248193d531ba63f6fbe73d' into users/me…
Meinersbur Nov 2, 2024
ad78fbf
Merge commit 'a195e2d461dde7c73c6dd24da097affb1a7b6f78' into users/me…
Meinersbur Nov 2, 2024
983427b
Merge commit '178fc4779ece31392a2cd01472b0279e50b3a199' into users/me…
Meinersbur Nov 2, 2024
99540f8
Merge commit 'fef3426ad3d8d5bf01941438467df318d00c6279' into users/me…
Meinersbur Nov 2, 2024
31ad714
erge commit 'e17a39bc314f97231e440c9e68d9f46a9c07af6d' into users/mei…
Meinersbur Nov 2, 2024
03a9841
Merge commit '14120227a34365e829d05c1413033d235d7d272c' into users/me…
Meinersbur Nov 2, 2024
d62cdf9
Merge commit 'e03f427196ec67a8a5cfbdd658f9eabe9bce83ce' into users/me…
Meinersbur Nov 2, 2024
59ef5e5
Merge commit '0f488a0b7d3da3c736e9242e5dd110ba0322e45a' into users/me…
Meinersbur Nov 2, 2024
a534511
Merge commit 'fa789dffb1e12c2aece0187aeacc48dfb1768340' into users/me…
Meinersbur Nov 2, 2024
b067189
Merge commit '76007138f4ffd4e0f510d12b5e8cad529c21f24d' into users/me…
Meinersbur Nov 2, 2024
f345536
Merge commit '4102625380823e58d7b13f01b5bd979a29bce19e' into users/me…
Meinersbur Nov 2, 2024
cd3c857
Remove unused varaible
Meinersbur Nov 2, 2024
5139231
Merge branch 'main' into users/meinersbur/irbuilder-extract-refactor
Meinersbur Nov 2, 2024
78ec058
Merge commit '41d5033eb162cb92b684855166cabfa3983b74c6^' into users/m…
Meinersbur Nov 2, 2024
17ae542
Merge commit '41d5033eb162cb92b684855166cabfa3983b74c6' into users/me…
Meinersbur Nov 2, 2024
ad220d9
Merge commit 'e2d1e2183a9615c669392eefcfe632cc0b59a649' into users/me…
Meinersbur Nov 2, 2024
4530a04
Re-apply foreach conversion
Meinersbur Nov 2, 2024
c2503de
Merge commit '7fa2a83d1d18b49255e10e63bc7fead72026285b' into users/me…
Meinersbur Nov 2, 2024
c0b5176
Compile fix
Meinersbur Nov 2, 2024
3fc8b2b
Merge commit 'ac29f5ea0fd5452cb5dfddae770b31867fc68ffc' into users/me…
Meinersbur Nov 2, 2024
2abc4c3
Merge commit 'bd5589d56e432a2fda69b26bb0fc4c85cba90086' into users/me…
Meinersbur Nov 2, 2024
85da148
Merge commit '5c8a548ce208c52981e26522aeb2c0c7e432431c' into users/me…
Meinersbur Nov 2, 2024
ce2f28a
Merge commit '44889ac041f78887197dcb7e6793a6a49e0945f3' into users/me…
Meinersbur Nov 2, 2024
304efdf
Merge commit '092e16532567cd9ca91034f35880ebd5d6c1e121' into users/me…
Meinersbur Nov 2, 2024
ba5a66f
Merge commit '74f8fa46908307edf6cb68f1b50e5b079f1b1680' into users/me…
Meinersbur Nov 2, 2024
69874fd
Merge commit '306c45820a99847f190f1adc294e06cc6719cf7e' into users/me…
Meinersbur Nov 2, 2024
4dc9c1c
Merge commit 'e548fffe6fbb4e0ab3efe58b5ceaf7b0e4ce379c' into users/me…
Meinersbur Nov 2, 2024
39da73c
Merge commit 'a743b60bbd822356af75bb31d6cb4276ce419bce' into users/me…
Meinersbur Nov 2, 2024
d8f9efb
Merge commit 'c779b6511c1fb117c98d0df1cdc8adf18793c215' into users/me…
Meinersbur Nov 2, 2024
02e938f
Merge commit '58195d38037c5f9b811ad71ebbc2c034d504a3ce' into users/me…
Meinersbur Nov 2, 2024
bedebcb
Merge commit '9565b27db666acda1d4a2243980d83426e330a15' into users/me…
Meinersbur Nov 2, 2024
bffe54f
Merge commit '0e549c0981bcf6cd23b834d3687f423374e2b9e4' into users/me…
Meinersbur Nov 2, 2024
45325c6
Merge commit '1762c2957f2beee1c3a4ac7c5b2523340a139d02' into users/me…
Meinersbur Nov 2, 2024
15b0460
Merge commit '5eaf8a23e68fadefa1550879103a63917bf1b87a' into users/me…
Meinersbur Nov 2, 2024
c9ec7a5
Merge commit '419fe950624e6ad851a4336872443b8edf733115' into users/me…
Meinersbur Nov 2, 2024
4a231a9
Merge commit 'faf3ec6016a8d5393953ad35dd2c3251fe32a713' into users/me…
Meinersbur Nov 2, 2024
63da106
Merge commit '4a1be0198c95af3aabc9a0cf0f8e854c669cc8d1' into users/me…
Meinersbur Nov 2, 2024
aab8e20
Merge commit '9d8e570218488e2d91ac52a2d48f834e8743ae56' into users/me…
Meinersbur Nov 2, 2024
b9eb1c5
Merge commit 'e60abd897fb7e0f6b87cdbe52987375f77632639' into users/me…
Meinersbur Nov 2, 2024
2b116b9
Merge commit '66282ed5f79d2e8fcad3e19a4c61d4bcfa1979bf' into users/me…
Meinersbur Nov 2, 2024
b156069
Merge commit '36ce7732ebdca65d4af135951be7b476e7cddbc3' into users/me…
Meinersbur Nov 2, 2024
530e429
Compile fix
Meinersbur Nov 2, 2024
72fd292
Merge commit '2118b9d39b91e93c0146611235072cd6ca0f27b1^' into HEAD
Meinersbur Nov 2, 2024
ed30cbc
Merge commit '2118b9d39b91e93c0146611235072cd6ca0f27b1' into HEAD
Meinersbur Nov 2, 2024
de01295
Repair --replace-with-all for NPM
Meinersbur Nov 3, 2024
a3e5813
Merge commit 'e1acf65bc1b6fbde7f0d099003c148f9b46f7b21' into users/me…
Meinersbur Nov 3, 2024
fc4ec34
opaque ptr
Meinersbur Nov 3, 2024
e2a38dd
Merge commit '72bd2da712c55ec732a40de0db5430204e2b24e6' into users/me…
Meinersbur Nov 3, 2024
c7170c7
clang-format
Meinersbur Nov 3, 2024
a302f02
Merge commit 'de44f8c005755d3c3b9f707b8390b775999a41fc' into users/me…
Meinersbur Nov 3, 2024
1839edc
clang-format
Meinersbur Nov 3, 2024
b1cb13e
Merge commit '4add729e3e77e641ae2c8c44214263bdd1ae6406' into users/me…
Meinersbur Nov 3, 2024
7a5b615
Merge commit '1d5937b05034b1959f9476607c49128f0c22634c' into users/me…
Meinersbur Nov 3, 2024
2811a38
Merge commit 'dd699c1333daeaea1c50c1506a66e9c7372afbb5' into users/me…
Meinersbur Nov 3, 2024
d7e29e4
Merge commit 'ee48944f7525bbb38486eb2494e4887fb5feae95' into users/me…
Meinersbur Nov 3, 2024
dd7c1fc
Merge commit '4fced020ab75a335203058372b9cd3a78c7c50d6' into users/me…
Meinersbur Nov 3, 2024
14dfe10
Merge commit '3e9219c14e7a720cb56a99b091b91db6d4f2c5bf' into users/me…
Meinersbur Nov 3, 2024
01048ef
Merge commit 'e08673653ea79810e62bcad008a1ace3cbbaf7d8' into users/me…
Meinersbur Nov 3, 2024
81c1407
Merge commit '8be7ac42f416a602ffd0daa2a42c42e1dfb75bc2' into users/me…
Meinersbur Nov 3, 2024
905124b
Merge commit '2f5752b68a6c209d631089c9453125f0b60fcdac' into users/me…
Meinersbur Nov 3, 2024
54c2872
Merge commit '64c71718bde4562b0c6655bccf0ebc931d8e94e5' into users/me…
Meinersbur Nov 3, 2024
557603e
Merge commit '376df21b153a76483ac85864e1bf14afb33d7109' into users/me…
Meinersbur Nov 3, 2024
9767179
clang-format
Meinersbur Nov 3, 2024
fcdb5d9
Merge commit '66465ed97c90911af4a0e75d033cff470813f51d' into users/me…
Meinersbur Nov 4, 2024
9496049
Merge commit 'f628802b77cf679349916851a51225df114cd6d3' into users/me…
Meinersbur Nov 4, 2024
e6417e4
Merge commit '0c6b352c1483f102d1072b26410e11c117bfcd0f' into users/me…
Meinersbur Nov 4, 2024
cfc428e
Merge commit '63c0c1a7274390110892edfacdab19dfc7992aa1' into users/me…
Meinersbur Nov 4, 2024
7e1a1dd
Merge commit 'b697d9a2be376d433c1c1c51fed0c546548f1781' into users/me…
Meinersbur Nov 4, 2024
331c829
Merge commit 'c9e3520252dbf1309c5ec943a900fae682bb0a27' into users/me…
Meinersbur Nov 4, 2024
2c74d1f
Merge commit 'a90631d7cf9911b0703b2d155eb5a4fbbb1fd4d0' into users/me…
Meinersbur Nov 4, 2024
65f24d7
Merge commit 'bf3db9b9fde276f50bbf7de6923f7aa541a15319' into users/me…
Meinersbur Nov 4, 2024
6ef448d
Merge commit '69796629b8cd0b5f0417e4d2e3c091e1571f20eb' into users/me…
Meinersbur Nov 4, 2024
ca664ee
Merge commit '16912a9a0eda3d76c2135f8d37629a35437f652a' into users/me…
Meinersbur Nov 4, 2024
57e0f7f
Merge commit '4619a32ad6bde20ee1f2d8297c431c0679c2c8bf' into users/me…
Meinersbur Nov 4, 2024
177c026
Merge commit 'ea7f998557d58c6d984832b34b126e33b8c04659' into users/me…
Meinersbur Nov 4, 2024
0ac0252
Merge commit '5e1ffddfaefdc162e58cd0ae03c8a643e9b0f072' into users/me…
Meinersbur Nov 4, 2024
edd5e05
Merge commit '7f3d338866065b95af6d5afaa9c929d9d6c7b54d' into users/me…
Meinersbur Nov 4, 2024
b69ce21
Merge commit '7629cef06a97c2b8e6905a885def7fade7c29539' into users/me…
Meinersbur Nov 4, 2024
60e52e5
Merge commit '6b77154ee6bc80d177cfbae4ec489f8601b9776d' into users/me…
Meinersbur Nov 4, 2024
c808a11
Merge commit 'e0f9f2628e011a9a5f79fdb6a512dd1d300295f7' into users/me…
Meinersbur Nov 4, 2024
4564f6f
Merge commit '2af415239962141e51a127943a2804c07d8ed3b8' into users/me…
Meinersbur Nov 4, 2024
e74f90f
Merge commit '1bb4d2601e90e0b26124cdbfd22c5ac41075c605' into users/me…
Meinersbur Nov 4, 2024
c04fc17
Merge commit 'c286985980b83fd7317db56ae3b669595e6a4653' into users/me…
Meinersbur Nov 4, 2024
c6fa79b
Merge commit '6635f3ea74a11e69ae521fecaa22f40eb29958b9' into users/me…
Meinersbur Nov 4, 2024
9c43dd6
Merge commit '25ee1b8f22bb6449855885a37daa361d8fba9395' into users/me…
Meinersbur Nov 4, 2024
93b7d5f
Merge commit '13e85f86408e2f258479978dcbff5af69a457568' into users/me…
Meinersbur Nov 4, 2024
744c655
Merge commit 'fd26f43aecb197795977cc93613325cc6d33f0f9' into users/me…
Meinersbur Nov 4, 2024
c288499
Merge commit '0ff97dc73b08ef7afcf3def415eb06ca474e504f' into users/me…
Meinersbur Nov 4, 2024
508a66c
Merge commit '5b2556adccec493ba3f9cec4b4bb9fc3ea01359c' into users/me…
Meinersbur Nov 4, 2024
4067f1d
Merge commit 'fcbebc06b09cfcaa0cff39bc952907fda9f183ad' into users/me…
Meinersbur Nov 4, 2024
1cddab4
Merge commit 'f825999be3e70200f0277e1d52ea1ae0e66b4593' into users/me…
Meinersbur Nov 4, 2024
716db4c
Merge commit 'b1b4fc1ae601a38d114f1a9834dc33a043bca762' into users/me…
Meinersbur Nov 4, 2024
a2b77f0
Merge commit '3ed964ea2a79c988757c0a62806560b316584414' into users/me…
Meinersbur Nov 4, 2024
b62577a
Merge commit '801ea1bff435ff09de0531e5e367fd55f027f77e' into users/me…
Meinersbur Nov 4, 2024
53771c6
Merge commit 'f9f1665a5294cf541a59faea52c488b28cb91b61' into users/me…
Meinersbur Nov 4, 2024
484aba5
Merge commit '8f1538f5468b7f4ceb628c364fff7ef1c28ae39c' into users/me…
Meinersbur Nov 4, 2024
a804e65
Merge commit '827626e108441049d6e4f7a0e3841c6b49e6678c' into users/me…
Meinersbur Nov 4, 2024
10d8df9
Merge commit 'd6ac28063fa9132c9dacf4c21246b3059a313b95' into users/me…
Meinersbur Nov 4, 2024
4754f74
Merge commit 'e8857fde3722112e7747f745caf1029889e9594e' into users/me…
Meinersbur Nov 4, 2024
b6f809e
Merge commit '206f3535024c47f34c1c8f2f40480d95375e7880' into users/me…
Meinersbur Nov 4, 2024
ed40726
Merge commit '69882261b6f50bef5dbd8bf83aeabc08d9931c7a' into users/me…
Meinersbur Nov 4, 2024
23d72e0
Merge commit 'd0475d966827cd9a9df32f0721e0dcb8889d5d76' into users/me…
Meinersbur Nov 4, 2024
c6a0ea1
Test fix
Meinersbur Nov 4, 2024
f60c123
Merge commit 'ad78fbf4205535501891ffecc7d2e9a81d47d410' into users/me…
Meinersbur Nov 4, 2024
25cd620
Merge commit '983427b4471203be3df21b38d0e5f6314a48f47c' into users/me…
Meinersbur Nov 4, 2024
0fde4cc
Merge commit '99540f8697e839460087315b16988a40e60967f9' into users/me…
Meinersbur Nov 4, 2024
4573095
Merge commit '31ad71477b68d9cafc033011e6a556a542199d82' into users/me…
Meinersbur Nov 4, 2024
6642107
Merge commit '03a98412270d51e6703118329a0d0d0ce1b0cf29' into users/me…
Meinersbur Nov 4, 2024
d2373d3
Merge commit 'd62cdf9f311a1717242b97304a3327585d06ed4c' into users/me…
Meinersbur Nov 4, 2024
1dc3cb9
Merge commit '59ef5e5ac6c0f4edb621465f56a82c51f662da63' into users/me…
Meinersbur Nov 4, 2024
91fd9e8
Merge commit 'a5345114e5ac1c767aa4cd6be2aa333bea9c5009' into users/me…
Meinersbur Nov 4, 2024
aed2ade
Merge commit 'b067189699f16c8b1671d11058615a9c25001313' into users/me…
Meinersbur Nov 4, 2024
fed60a5
Merge commit 'f3455361237daa6b9059b37daaa97688ada7d772' into users/me…
Meinersbur Nov 4, 2024
2f18aed
Merge commit 'cd3c85747ffe4904bb5bf6dc81a485ab641c184a' into users/me…
Meinersbur Nov 4, 2024
3be5b81
Merge branch 'users/meinersbur/irbuilder-extract-refactor' into users…
Meinersbur Nov 4, 2024
e8c4bed
Merge commit 'eee8dd90887cbf86fa0fea1ff770377a87af0257' into HEAD
Meinersbur Nov 4, 2024
1234ca6
clang-format
Meinersbur Nov 4, 2024
94ea43a
Merge commit '557603e8e449' into HEAD
Meinersbur Nov 4, 2024
d1c2cd4
Merge commit '94ea43a672c1' into users/meinersbur/irbuilder-extract
Meinersbur Nov 4, 2024
df93735
post-merge fix
Meinersbur Nov 4, 2024
035c7ea
Merge commit '4aaa92578686176243a294eeb2ca5697a99edcaa^' into users/m…
Meinersbur Nov 4, 2024
d5cb3a9
Merge commit '4aaa92578686176243a294eeb2ca5697a99edcaa' into users/me…
Meinersbur Nov 4, 2024
3947031
post-merge fix
Meinersbur Nov 4, 2024
3cffa34
Merge branch 'main' into users/meinersbur/irbuilder-extract-refactor
Meinersbur Nov 4, 2024
4455ed6
erge commit '035c7eadfdf7a4a5d8d32a37307f83188a838627' into users/mei…
Meinersbur Nov 4, 2024
dacf101
Merge commit 'd5cb3a9bccf5ff594a91e0a77e8d3a93f4aebc12' into users/me…
Meinersbur Nov 4, 2024
54bc575
Merge commit '3cffa3474fd20518e19afa0c0ad3ff602864f688' into users/me…
Meinersbur Nov 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion llvm/include/llvm/Transforms/IPO/BlockExtractor.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,13 @@ class BasicBlock;

struct BlockExtractorPass : PassInfoMixin<BlockExtractorPass> {
BlockExtractorPass(std::vector<std::vector<BasicBlock *>> &&GroupsOfBlocks,
bool EraseFunctions);
bool EraseFunctions, bool KeepOldBlocks);
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);

private:
std::vector<std::vector<BasicBlock *>> GroupsOfBlocks;
bool EraseFunctions;
bool KeepOldBlocks;
};
} // namespace llvm

Expand Down
14 changes: 10 additions & 4 deletions llvm/include/llvm/Transforms/Utils/Cloning.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,16 @@ struct ClonedCodeInfo {
/// If you would like to collect additional information about the cloned
/// function, you can specify a ClonedCodeInfo object with the optional fifth
/// parameter.
BasicBlock *CloneBasicBlock(const BasicBlock *BB, ValueToValueMapTy &VMap,
const Twine &NameSuffix = "", Function *F = nullptr,
ClonedCodeInfo *CodeInfo = nullptr,
DebugInfoFinder *DIFinder = nullptr);
///
/// If you would like to clone only a subset of instructions in the basic block,
/// you can specify a callback that returns true only for those instructions
/// that are to be cloned with the optional seventh paramter.
BasicBlock *
CloneBasicBlock(const BasicBlock *BB, ValueToValueMapTy &VMap,
const Twine &NameSuffix = "", Function *F = nullptr,
ClonedCodeInfo *CodeInfo = nullptr,
DebugInfoFinder *DIFinder = nullptr,
function_ref<bool(const Instruction *)> InstSelect = {});

/// Return a copy of the specified function and add it to that
/// function's module. Also, any references specified in the VMap are changed
Expand Down
81 changes: 64 additions & 17 deletions llvm/include/llvm/Transforms/Utils/CodeExtractor.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class Instruction;
class Module;
class Type;
class Value;
class StructType;

/// A cache for the CodeExtractor analysis. The operation \ref
/// CodeExtractor::extractCodeRegion is guaranteed not to invalidate this
Expand Down Expand Up @@ -99,14 +100,19 @@ class CodeExtractorAnalysisCache {
// If true, varargs functions can be extracted.
bool AllowVarArgs;

/// If true, copies the code into the extracted function instead of moving
/// it.
bool KeepOldBlocks;

// Bits of intermediate state computed at various phases of extraction.
SetVector<BasicBlock *> Blocks;
unsigned NumExitBlocks = std::numeric_limits<unsigned>::max();
Type *RetTy;

// Mapping from the original exit blocks, to the new blocks inside
// the function.
SmallVector<BasicBlock *, 4> OldTargets;
/// Lists of blocks that are branched from the code region to be extracted.
/// Each block is contained at most once. Its order defines the return value
/// of the extracted function, when leaving the extracted function via the
/// first block it returns 0. When leaving via the second entry it returns
/// 1, etc.
SmallVector<BasicBlock *> SwitchCases;

// Suffix to use when creating extracted function (appended to the original
// function name + "."). If empty, the default is to use the entry block
Expand Down Expand Up @@ -134,13 +140,19 @@ class CodeExtractorAnalysisCache {
/// If ArgsInZeroAddressSpace param is set to true, then the aggregate
/// param pointer of the outlined function is declared in zero address
/// space.
///
/// If KeepOldBlocks is true, the original instances of the extracted region
/// remains in the original function so they can still be branched to from
/// non-extracted blocks. However, only branches to the first block will
/// call the extracted function.
CodeExtractor(ArrayRef<BasicBlock *> BBs, DominatorTree *DT = nullptr,
bool AggregateArgs = false, BlockFrequencyInfo *BFI = nullptr,
BranchProbabilityInfo *BPI = nullptr,
AssumptionCache *AC = nullptr, bool AllowVarArgs = false,
bool AllowAlloca = false,
BasicBlock *AllocationBlock = nullptr,
std::string Suffix = "", bool ArgsInZeroAddressSpace = false);
std::string Suffix = "", bool ArgsInZeroAddressSpace = false,
bool KeepOldBlocks = false);

/// Perform the extraction, returning the new function.
///
Expand Down Expand Up @@ -238,26 +250,61 @@ class CodeExtractorAnalysisCache {
getLifetimeMarkers(const CodeExtractorAnalysisCache &CEAC,
Instruction *Addr, BasicBlock *ExitBlock) const;

/// Updates the list of SwitchCases (corresponding to exit blocks) after
/// changes of the control flow or the Blocks list.
void recomputeSwitchCases();

/// Return the type used for the return code of the extracted function to
/// indicate which exit block to jump to.
Type *getSwitchType();

void severSplitPHINodesOfEntry(BasicBlock *&Header);
void severSplitPHINodesOfExits(const SetVector<BasicBlock *> &Exits);
void severSplitPHINodesOfExits();
void splitReturnBlocks();

Function *constructFunction(const ValueSet &inputs,
const ValueSet &outputs,
BasicBlock *header,
BasicBlock *newRootNode, BasicBlock *newHeader,
Function *oldFunction, Module *M);

void moveCodeToFunction(Function *newFunction);

void calculateNewCallTerminatorWeights(
BasicBlock *CodeReplacer,
DenseMap<BasicBlock *, BlockFrequency> &ExitWeights,
const DenseMap<BasicBlock *, BlockFrequency> &ExitWeights,
BranchProbabilityInfo *BPI);

CallInst *emitCallAndSwitchStatement(Function *newFunction,
BasicBlock *newHeader,
ValueSet &inputs, ValueSet &outputs);
/// Normalizes the control flow of the extracted regions, such as ensuring
/// that the extracted region does not contain a return instruction.
void normalizeCFGForExtraction(BasicBlock *&header);

/// Generates the function declaration for the function containing the
/// extracted code.
Function *constructFunctionDeclaration(const ValueSet &inputs,
const ValueSet &outputs,
BlockFrequency EntryFreq,
const Twine &Name,
ValueSet &StructValues,
StructType *&StructTy);

/// Generates the code for the extracted function. That is: a prolog, the
/// moved or copied code from the original function, and epilogs for each
/// exit.
void emitFunctionBody(const ValueSet &inputs, const ValueSet &outputs,
const ValueSet &StructValues, Function *newFunction,
StructType *StructArgTy, BasicBlock *header,
const ValueSet &SinkingCands);

/// Generates a Basic Block that calls the extracted function.
CallInst *emitReplacerCall(const ValueSet &inputs, const ValueSet &outputs,
const ValueSet &StructValues,
Function *newFunction, StructType *StructArgTy,
Function *oldFunction, BasicBlock *ReplIP,
BlockFrequency EntryFreq,
ArrayRef<Value *> LifetimesStart,
std::vector<Value *> &Reloads);

/// Connects the basic block containing the call to the extracted function
/// into the original function's control flow.
void insertReplacerCall(
Function *oldFunction, BasicBlock *header, BasicBlock *codeReplacer,
const ValueSet &outputs, ArrayRef<Value *> Reloads,
const DenseMap<BasicBlock *, BlockFrequency> &ExitWeights);
};

} // end namespace llvm
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/Passes/PassRegistry.def
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ MODULE_PASS("dfsan", DataFlowSanitizerPass())
MODULE_PASS("dot-callgraph", CallGraphDOTPrinterPass())
MODULE_PASS("dxil-upgrade", DXILUpgradePass())
MODULE_PASS("elim-avail-extern", EliminateAvailableExternallyPass())
MODULE_PASS("extract-blocks", BlockExtractorPass({}, false))
MODULE_PASS("extract-blocks", BlockExtractorPass({}, false, false))
MODULE_PASS("expand-variadics", ExpandVariadicsPass(ExpandVariadicsMode::Disable))
MODULE_PASS("forceattrs", ForceFunctionAttrsPass())
MODULE_PASS("function-import", FunctionImportPass())
Expand Down
25 changes: 20 additions & 5 deletions llvm/lib/Transforms/IPO/BlockExtractor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ static cl::opt<bool>
namespace {
class BlockExtractor {
public:
BlockExtractor(bool EraseFunctions) : EraseFunctions(EraseFunctions) {}
BlockExtractor(bool EraseFunctions, bool KeepOldBlocks)
: EraseFunctions(EraseFunctions), KeepOldBlocks(KeepOldBlocks) {}
bool runOnModule(Module &M);
void
init(const std::vector<std::vector<BasicBlock *>> &GroupsOfBlocksToExtract) {
Expand All @@ -53,6 +54,7 @@ class BlockExtractor {
private:
std::vector<std::vector<BasicBlock *>> GroupsOfBlocks;
bool EraseFunctions;
bool KeepOldBlocks;
/// Map a function name to groups of blocks.
SmallVector<std::pair<std::string, SmallVector<std::string, 4>>, 4>
BlocksByName;
Expand Down Expand Up @@ -169,7 +171,19 @@ bool BlockExtractor::runOnModule(Module &M) {
Changed = true;
}
CodeExtractorAnalysisCache CEAC(*BBs[0]->getParent());
Function *F = CodeExtractor(BlocksToExtractVec).extractCodeRegion(CEAC);
Function *F = CodeExtractor(BlocksToExtractVec,
/* DT */ nullptr,
/* AggregateArgs*/ false,
/* BFI */ nullptr,
/* BPI */ nullptr,
/* AC */ nullptr,
/* AllowVarArgs */ false,
/* AllowAlloca */ false,
/* AllocationBlock */ nullptr,
/* Suffix */ "",
/* ArgsInZeroAddressSpace */ false,
/* KeepOldBlocks */ KeepOldBlocks)
.extractCodeRegion(CEAC);
if (F)
LLVM_DEBUG(dbgs() << "Extracted group '" << (*BBs.begin())->getName()
<< "' in: " << F->getName() << '\n');
Expand All @@ -196,12 +210,13 @@ bool BlockExtractor::runOnModule(Module &M) {

BlockExtractorPass::BlockExtractorPass(
std::vector<std::vector<BasicBlock *>> &&GroupsOfBlocks,
bool EraseFunctions)
: GroupsOfBlocks(GroupsOfBlocks), EraseFunctions(EraseFunctions) {}
bool EraseFunctions, bool KeepOldBlocks)
: GroupsOfBlocks(GroupsOfBlocks), EraseFunctions(EraseFunctions),
KeepOldBlocks(KeepOldBlocks) {}

PreservedAnalyses BlockExtractorPass::run(Module &M,
ModuleAnalysisManager &AM) {
BlockExtractor BE(EraseFunctions);
BlockExtractor BE(EraseFunctions, KeepOldBlocks);
BE.init(GroupsOfBlocks);
return BE.runOnModule(M) ? PreservedAnalyses::none()
: PreservedAnalyses::all();
Expand Down
12 changes: 8 additions & 4 deletions llvm/lib/Transforms/Utils/CloneFunction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,11 @@ using namespace llvm;
#define DEBUG_TYPE "clone-function"

/// See comments in Cloning.h.
BasicBlock *llvm::CloneBasicBlock(const BasicBlock *BB, ValueToValueMapTy &VMap,
const Twine &NameSuffix, Function *F,
ClonedCodeInfo *CodeInfo,
DebugInfoFinder *DIFinder) {
BasicBlock *
llvm::CloneBasicBlock(const BasicBlock *BB, ValueToValueMapTy &VMap,
const Twine &NameSuffix, Function *F,
ClonedCodeInfo *CodeInfo, DebugInfoFinder *DIFinder,
function_ref<bool(const Instruction *)> InstSelect) {
BasicBlock *NewBB = BasicBlock::Create(BB->getContext(), "", F);
NewBB->IsNewDbgInfoFormat = BB->IsNewDbgInfoFormat;
if (BB->hasName())
Expand All @@ -55,6 +56,9 @@ BasicBlock *llvm::CloneBasicBlock(const BasicBlock *BB, ValueToValueMapTy &VMap,

// Loop over all instructions, and copy them over.
for (const Instruction &I : *BB) {
if (InstSelect && !InstSelect(&I))
continue;

if (DIFinder && TheModule)
DIFinder->processInstruction(*TheModule, I);

Expand Down
Loading
Loading