Commit Graph

60 Commits

Author SHA1 Message Date
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