SuccessChanges

Summary

  1. [IRSim][IROutliner] Limit to extracting regions that only require (details)
Commit c52bcf3a9b2d3cd60e62f38218979b781ccc9d8a by andrew.litteken
[IRSim][IROutliner] Limit to extracting regions that only require
inputs.

Extracted regions can have both inputs and outputs.  In addition, the
CodeExtractor removes inputs that are only used in llvm.assumes, and
sunken allocas (values are used entirely in the extracted region as
denoted by lifetime intrinsics).  We also cannot combine sections that
have different constants in the same structural location, and these
constants will have to elevated to argument. This patch limits the
extracted regions to those that only require inputs, and do not have any
other special cases.

We test that we do not outline the wrong constants in:
test/Transforms/IROutliner/outliner-different-constants.ll
test/Transforms/IROutliner/outliner-different-globals.ll
test/Transforms/IROutliner/outliner-constant-vs-registers.ll

We test that correctly outline in:
test/Transforms/IROutliner/outlining-same-globals.ll
test/Transforms/IROutliner/outlining-same-constants.ll
test/Transforms/IROutliner/outlining-different-structure.ll

Reviewers: paquette, plofti

Differential Revision: https://reviews.llvm.org/D86977
The file was modifiedllvm/test/Transforms/IROutliner/outlining-same-constants.ll
The file was modifiedllvm/include/llvm/Transforms/IPO/IROutliner.h
The file was modifiedllvm/test/Transforms/IROutliner/extraction.ll
The file was modifiedllvm/test/Transforms/IROutliner/illegal-assumes.ll
The file was modifiedllvm/test/Transforms/IROutliner/illegal-vaarg.ll
The file was addedllvm/test/Transforms/IROutliner/outlining-constants-vs-registers.ll
The file was modifiedllvm/test/Transforms/IROutliner/illegal-memcpy.ll
The file was addedllvm/test/Transforms/IROutliner/outlining-different-constants.ll
The file was modifiedllvm/test/Transforms/IROutliner/illegal-memmove.ll
The file was addedllvm/test/Transforms/IROutliner/outlining-different-globals.ll
The file was modifiedllvm/test/Transforms/IROutliner/outlining-different-structure.ll
The file was modifiedllvm/lib/Transforms/IPO/IROutliner.cpp