[PATCH] LLVM intrinsic for invariants
hfinkel at anl.gov
hfinkel at anl.gov
Sat Jul 12 10:12:38 PDT 2014
This adds the basic invariant intrinsic, noop lowering, and some basic properties:
- llvm.invariant(undef) and llvm.invariant(true) are dead
- llvm.invariant(false) is unreachable (this directly corresponds to the documented behavior of MSVC's __assume(0))
The intrinsic is tagged as writing arbitrarily, in order to maintain control dependencies. BasicAA has been updated, however, to return NoModRef for any particular location-based query so that we don't unnecessarily block code motion.
http://reviews.llvm.org/D178
Files:
docs/LangRef.rst
include/llvm/IR/Intrinsics.td
lib/Analysis/BasicAliasAnalysis.cpp
lib/Analysis/TargetTransformInfo.cpp
lib/CodeGen/BasicTargetTransformInfo.cpp
lib/CodeGen/IntrinsicLowering.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/Transforms/Utils/Local.cpp
test/Analysis/BasicAA/invariant.ll
test/CodeGen/Generic/invariant.ll
test/Transforms/InstSimplify/invariant.ll
test/Transforms/SimplifyCFG/invariant.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D178.11338.patch
Type: text/x-patch
Size: 10883 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140712/d8781e56/attachment.bin>
More information about the llvm-commits
mailing list