Commit Graph

4 Commits

Author SHA1 Message Date
Florian Hahn 250de7388b
[llvm-reduce] Add reduction for special globals like llvm.used.
This patch adds a reduction of 'special' globals that lead to further
reductions (e.g. alias or regular globals reduction) being less efficient
because there are special constraints on values referenced in those
special globals. For example, values in @llvm.used and
@llvm.compiler.used need to be named, so replacing all uses of an
alias/global with undef or a different unnamed constant results in
invalid IR.

More details:
https://llvm.org/docs/LangRef.html#intrinsic-global-variables

Reviewed By: lebedev.ri

Differential Revision: https://reviews.llvm.org/D90302
2020-11-11 11:25:05 +00:00
Florian Hahn 23c8da25ef [llvm-reduce] Add reduction for aliases.
This patch adds a new reduction pass that tries to remove aliases.
It runs early, as most of those likely can be removed up-front in
practice.

This substantially improves llvm-reduce for IR generated by the swift
compiler, which can generate a lot of aliases which lead to lots of
invalid reductions.

Reviewed By: lebedev.ri

Differential Revision: https://reviews.llvm.org/D90260
2020-10-28 13:11:19 +00:00
Florian Hahn 4b1fbdbd8e [llvm-reduce] Extend test to also use special globals. 2020-10-28 12:11:55 +00:00
Florian Hahn 7d6b58302a [llvm-reduce] Add test with some aliases. 2020-10-27 19:29:48 +00:00