Introduce a @llvm.experimental.guard intrinsic
authorSanjoy Das <sanjoy@playingwithpointers.com>
Thu, 31 Mar 2016 00:18:46 +0000 (00:18 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Thu, 31 Mar 2016 00:18:46 +0000 (00:18 +0000)
commit021de058df7ff14b279e434e1fbea4b468a47cd5
treeb46f67f86c22331a30b9674d835df29d6d45045b
parent21d3bffe299ddb505cd9ae4f78fbdf92d61477c7
Introduce a @llvm.experimental.guard intrinsic

Summary:
As discussed on llvm-dev[1].

This change adds the basic boilerplate code around having this intrinsic
in LLVM:

 - Changes in Intrinsics.td, and the IR Verifier
 - A lowering pass to lower @llvm.experimental.guard to normal
   control flow
 - Inliner support

[1]: http://lists.llvm.org/pipermail/llvm-dev/2016-February/095523.html

Reviewers: reames, atrick, chandlerc, rnk, JosephTremoulet, echristo

Subscribers: mcrosier, llvm-commits

Differential Revision: http://reviews.llvm.org/D18527

llvm-svn: 264976
12 files changed:
llvm/docs/LangRef.rst
llvm/include/llvm/IR/Intrinsics.td
llvm/include/llvm/InitializePasses.h
llvm/include/llvm/Transforms/Scalar.h
llvm/lib/IR/Verifier.cpp
llvm/lib/Transforms/Scalar/CMakeLists.txt
llvm/lib/Transforms/Scalar/LowerGuardIntrinsic.cpp [new file with mode: 0644]
llvm/lib/Transforms/Scalar/Scalar.cpp
llvm/lib/Transforms/Utils/InlineFunction.cpp
llvm/test/Transforms/Inline/guard-intrinsic.ll [new file with mode: 0644]
llvm/test/Transforms/LowerGuardIntrinsic/basic.ll [new file with mode: 0644]
llvm/test/Verifier/guard-intrinsic.ll [new file with mode: 0644]