llvm-project/llvm/lib
Andrew Litteken e6ae623314 [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
2020-12-28 16:17:07 -06:00
..
Analysis [ValueTracking] Implement impliesPoison 2020-12-29 06:50:38 +09:00
AsmParser [DebugInfo] Support Fortran 'use <external module>' statement. 2020-12-18 13:10:57 -05:00
BinaryFormat [XCOFF][AIX] Emit EH information in traceback table 2020-12-16 09:34:59 -05:00
Bitcode [DebugInfo] Support Fortran 'use <external module>' statement. 2020-12-18 13:10:57 -05:00
Bitstream llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
CodeGen [MIRPrinter] Fix incorrect output of unnamed stack names 2020-12-28 18:01:40 +01:00
DWARFLinker [dsymutil][DWARFLinker][NFC] Make interface of AddressMap more general. 2020-12-10 14:57:08 +03:00
DebugInfo [llvm-symbolizer][Windows] Add start line when searching in line table sections. 2020-12-17 07:57:36 -08:00
Demangle llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
ExecutionEngine [libObject] - Add more ELF types to LLVM_ELF_IMPORT_TYPES_ELFT define (ELFTypes.h). 2020-12-25 11:39:05 +03:00
Extensions llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
FileCheck [FileCheck] Add a literal check directive modifier 2020-12-18 17:26:15 -08:00
Frontend [OpenMPIRBuilder] Various changes required for tileLoops. 2020-12-11 11:37:45 -06:00
FuzzMutate llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
Fuzzer
IR Make NPM OptBisectInstrumentation use global singleton OptBisect 2020-12-20 13:47:56 -08:00
IRReader static const char *const foo => const char foo[] 2020-12-01 10:33:18 -08:00
InterfaceStub [lib/Object, tools] - Make ELFObjectFile::getELFFile return reference. 2020-12-04 16:02:29 +03:00
LTO [NFC] Reduce include files dependency and AA header cleanup (part 2). 2020-12-17 14:04:48 +03:00
LineEditor llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
Linker [ExecutionEngine, Linker] Use erase_if (NFC) 2020-12-23 21:44:39 -08:00
MC [MC] Split MCContext::createTempSymbol, default AlwaysAddSuffix to true, and add comments 2020-12-21 14:04:13 -08:00
MCA [llvm-mca] Fix processing thumb instruction set 2020-11-24 18:27:59 +03:00
Object Replace `T(x)` with `reinterpret_cast<T>(x)` everywhere it means reinterpret_cast. NFC. 2020-12-22 19:54:29 -05:00
ObjectYAML [libObject] - Add more ELF types to LLVM_ELF_IMPORT_TYPES_ELFT define (ELFTypes.h). 2020-12-25 11:39:05 +03:00
Option Remove memory allocation with string 2020-12-05 15:14:44 -08:00
Passes [NewPM] Fix CGSCCOptimizerLateEPCallbacks place in pipeline 2020-12-28 14:03:10 -08:00
ProfileData [NFC][SampleFDO] Preparation to support multiple sections with the same type 2020-12-16 22:28:45 -08:00
Remarks llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
Support [NFC] Refactor some SourceMgr code 2020-12-26 17:53:32 +00:00
TableGen [TableGen] Fix bug in !interleave operator 2020-12-28 12:17:24 -05:00
Target [WebAssembly] Prototype extending pairwise add instructions 2020-12-28 14:11:14 -08:00
Testing [llvm][NFC] Remove unnecessary vector creation in Annotations 2020-11-14 15:55:09 +00:00
TextAPI llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
ToolDrivers llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
Transforms [IROutliner] Adding support for consolidating functions with different output arguments. 2020-12-28 16:17:07 -06:00
WindowsManifest llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
XRay [lib/Object, tools] - Make ELFObjectFile::getELFFile return reference. 2020-12-04 16:02:29 +03:00
CMakeLists.txt llvmbuildectomy - support disabled native target 2020-11-13 15:50:13 +01:00