[all-commits] [llvm/llvm-project] f5f377: [IRSim][IROutliner] Adding support for recognizing...

Andrew Litteken via All-commits all-commits at lists.llvm.org
Tue Jan 25 13:21:28 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: f5f377d1fca8ecb4ec5bd2bca656e7c719727404
      https://github.com/llvm/llvm-project/commit/f5f377d1fca8ecb4ec5bd2bca656e7c719727404
  Author: Andrew Litteken <andrew.litteken at gmail.com>
  Date:   2022-01-25 (Tue, 25 Jan 2022)

  Changed paths:
    M llvm/include/llvm/Analysis/IRSimilarityIdentifier.h
    M llvm/include/llvm/Transforms/IPO/IROutliner.h
    M llvm/lib/Analysis/IRSimilarityIdentifier.cpp
    M llvm/lib/Transforms/IPO/IROutliner.cpp
    M llvm/test/Transforms/IROutliner/illegal-indirect-calls.ll
    A llvm/test/Transforms/IROutliner/legal-indirect-calls.ll
    A llvm/test/Transforms/IROutliner/outlining-call-and-indirect.ll
    A llvm/test/Transforms/IROutliner/outlining-calls-names-must-match.ll
    M llvm/test/Transforms/IROutliner/outlining-calls.ll
    M llvm/unittests/Analysis/IRSimilarityIdentifierTest.cpp

  Log Message:
  -----------
  [IRSim][IROutliner] Adding support for recognizing and outlining indirect function calls, and function calls with different names, but the same type

The outliner currently requires that function calls not be indirect calls, and have that the function name, and function type must match, as well as other attributes such as calling conventions. This patch treats called functions as values, and just another operand, and named function calls as constants. This allows functions to be treated like any other constant, or input and output into the outlined functions.

There are also debugging flags added to enforce the old behaviors where indirect calls not be allowed, and to enforce the old rule that function calls names must also match.

Reviewers: paquette, jroelofs

Differential Revision: https://reviews.llvm.org/D109448




More information about the All-commits mailing list