[PATCH] D126455: [FuncSpec] Make the Function Specializer part of the IPSCCP pass.

Alexandros Lamprineas via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 7 09:27:01 PST 2022


labrinea updated this revision to Diff 473696.
labrinea marked an inline comment as done.
labrinea added a comment.

This revision is somewhat different from the previous ones because we no longer replace instructions/arguments whilst in the main specialization loop of the SCCP pass. Instead we use the lattice value when rewritting callsites and when promoting constant stack values. Last time I checked this was even more lightweight from the previous revision. Builds successfully the llvm-test-suite with aggressive funcspec options; haven't tried clang bootstrap yet. Also improves one of the unit tests with recursive functions.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D126455/new/

https://reviews.llvm.org/D126455

Files:
  llvm/include/llvm/InitializePasses.h
  llvm/include/llvm/LinkAllPasses.h
  llvm/include/llvm/Transforms/IPO.h
  llvm/include/llvm/Transforms/IPO/FunctionSpecialization.h
  llvm/include/llvm/Transforms/IPO/SCCP.h
  llvm/include/llvm/Transforms/Scalar/SCCP.h
  llvm/include/llvm/Transforms/Utils/SCCPSolver.h
  llvm/lib/Passes/PassBuilderPipelines.cpp
  llvm/lib/Passes/PassRegistry.def
  llvm/lib/Transforms/IPO/FunctionSpecialization.cpp
  llvm/lib/Transforms/IPO/IPO.cpp
  llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
  llvm/lib/Transforms/IPO/SCCP.cpp
  llvm/lib/Transforms/Scalar/CMakeLists.txt
  llvm/lib/Transforms/Scalar/SCCP.cpp
  llvm/lib/Transforms/Utils/SCCPSolver.cpp
  llvm/test/Transforms/FunctionSpecialization/bug52821-use-after-free.ll
  llvm/test/Transforms/FunctionSpecialization/bug55000-read-uninitialized-value.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-always-inline.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression2.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression3.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression4.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression5.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-integers.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-loop.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize2.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize3.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup2.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-noexec.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-nonconst-glob.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-nothing-todo.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-poison.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive2.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive3.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive4.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization-stats.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization2.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization3.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization4.ll
  llvm/test/Transforms/FunctionSpecialization/function-specialization5.ll
  llvm/test/Transforms/FunctionSpecialization/get-possible-constants.ll
  llvm/test/Transforms/FunctionSpecialization/identical-specializations.ll
  llvm/test/Transforms/FunctionSpecialization/literal-const.ll
  llvm/test/Transforms/FunctionSpecialization/no-spec-unused-arg.ll
  llvm/test/Transforms/FunctionSpecialization/noinline.ll
  llvm/test/Transforms/FunctionSpecialization/remove-dead-recursive-function.ll
  llvm/test/Transforms/FunctionSpecialization/specialization-order.ll
  llvm/test/Transforms/FunctionSpecialization/specialize-multiple-arguments.ll
  llvm/utils/gn/secondary/llvm/lib/Transforms/Scalar/BUILD.gn

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D126455.473696.patch
Type: text/x-patch
Size: 115535 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221107/fbffbe73/attachment.bin>


More information about the llvm-commits mailing list