[PATCH] D17732: Introduce @llvm.experimental.deoptimize

Sanjoy Das via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 29 13:43:48 PST 2016


sanjoy created this revision.
sanjoy added reviewers: atrick, chandlerc, rnk, reames.
sanjoy added subscribers: JosephTremoulet, maksfb, mjacob, kmod, llvm-commits.
Herald added a subscriber: mcrosier.

This intrinsic, together with deoptimization operand bundles, allow
frontends to express transfer of control and frame-local state from
one (typically more specialized, hence faster) version of a function
into another (typically more generic, hence slower) version.

In languages with a fully integrated managed runtime this intrinsic can
be used to implement "uncommon trap" like functionality.  In unmanaged
languages like C and C++, this intrinsic can be used to represent the
slow paths of specialized functions.

This change specifically does not discuss lowering strategies, that will
come later.

http://reviews.llvm.org/D17732

Files:
  docs/LangRef.rst
  include/llvm/IR/BasicBlock.h
  include/llvm/IR/CallSite.h
  include/llvm/IR/Intrinsics.td
  lib/IR/BasicBlock.cpp
  lib/IR/Verifier.cpp
  lib/Transforms/Utils/InlineFunction.cpp
  test/Transforms/Inline/deoptimize-intrinsic.ll
  test/Verifier/deoptimize-intrinsic.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D17732.49412.patch
Type: text/x-patch
Size: 11337 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160229/4a6fcd4c/attachment.bin>


More information about the llvm-commits mailing list