Mark Lacey
da9c346444
Functions with differing phis should not be merged.
...
Check that the incoming blocks of phi nodes are identical, and block
function merging if they are not.
rdar://problem/26387654
2016-05-20 08:58:43 -07:00
eeckstein
951086f62e
Merge pull request #2531 from practicalswift/fix-llvmmergefunctions-header
...
[gardening] Add licensing preamble.
2016-05-16 13:49:52 -07:00
practicalswift
e6e360bcfb
Merge pull request #2535 from practicalswift/code-whitespace
...
[gardening] Add missing whitespace.
2016-05-15 07:46:22 +02:00
practicalswift
54427ca61e
[gardening] Add missing whitespace.
2016-05-15 07:45:52 +02:00
swift-ci
04f44e22f9
Merge pull request #2533 from practicalswift/remove-unused-var
2016-05-14 18:27:53 -07:00
practicalswift
21c872c590
[gardening] Fix recently introduced typos.
2016-05-14 20:33:28 +02:00
practicalswift
6cc92e78b4
[gardening] Remove unused variable FuncsInCallCycleToMerge.
2016-05-14 19:49:48 +02:00
practicalswift
db585be16f
[gardening] Add licensing preamble.
2016-05-14 19:25:50 +02:00
Erik Eckstein
cbe78e0839
fix build error in LLVMMergeFunctions caused by upstream llvm changes
...
(cherry picked from commit 610996a71fade98ea43d9047740feb02b8d4eac3)
2016-05-13 22:04:50 -07:00
Erik Eckstein
f0022a5aac
Add an LLVM pass to merge similar functions.
...
It's like LLVM's MergeFunctions pass, except that it can also merge functions which differ by some constants.
The intention is to merge specialized functions which only differ by metadata lookups. But it can also merge other types of functions.
It gives ~7% code size reducation for the stdlib.
There are still some open TODOs, e.g. to share common code with LLVM's MergeFunctions pass (currently much code is just copied).
2016-05-11 09:46:46 -07:00