aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineFunctionPass.cpp
diff options
context:
space:
mode:
authorAndrew Litteken <andrew.litteken@gmail.com>2020-09-15 22:51:43 -0500
committerAndrew Litteken <andrew.litteken@gmail.com>2020-12-28 16:17:07 -0600
commite6ae623314bab3ddd983ed941bf63a6d4c63a1f4 (patch)
tree139f38c77ab4b61d70fe47e64f146cf1c0cceabb /llvm/lib/CodeGen/MachineFunctionPass.cpp
parent25007b4d7e094c569d512770bd2397d8667fd3db (diff)
downloadllvm-e6ae623314bab3ddd983ed941bf63a6d4c63a1f4.zip
llvm-e6ae623314bab3ddd983ed941bf63a6d4c63a1f4.tar.gz
llvm-e6ae623314bab3ddd983ed941bf63a6d4c63a1f4.tar.bz2
[IROutliner] Adding support for consolidating functions with different output arguments.
Certain regions can have values introduced inside the region that are used outside of the region. These may not be the same for each similar region, so we must create one over arching set of arguments for the consolidated function. We do this by iterating over the outputs for each extracted function, and creating as many different arguments to encapsulate the different outputs sets. For each output set, we create a different block with the necessary stores from the value to the output register. There is then one switch statement, controlled by an argument to the function, to differentiate which block to use. Changed Tests for consistency: llvm/test/Transforms/IROutliner/extraction.ll llvm/test/Transforms/IROutliner/illegal-assumes.ll llvm/test/Transforms/IROutliner/illegal-memcpy.ll llvm/test/Transforms/IROutliner/illegal-memmove.ll llvm/test/Transforms/IROutliner/illegal-vaarg.ll Tests to test new functionality: llvm/test/Transforms/IROutliner/outlining-different-output-blocks.ll llvm/test/Transforms/IROutliner/outlining-remapped-outputs.ll llvm/test/Transforms/IROutliner/outlining-same-output-blocks.ll Reviewers: jroelofs, paquette Differential Revision: https://reviews.llvm.org/D87296
Diffstat (limited to 'llvm/lib/CodeGen/MachineFunctionPass.cpp')
0 files changed, 0 insertions, 0 deletions