[EarlyCSE] Simplify guard intrinsics
authorSanjoy Das <sanjoy@playingwithpointers.com>
Fri, 29 Apr 2016 21:52:58 +0000 (21:52 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Fri, 29 Apr 2016 21:52:58 +0000 (21:52 +0000)
commitee81b23fe78d70aef8a49df2c55a6d98f611a77d
tree583fdc4e88173e5f2a1315d02b23ed93b71e1b38
parent701c21ea107280011c74cb0c41e9db9a3bd30cee
[EarlyCSE] Simplify guard intrinsics

Summary:
This change teaches EarlyCSE some basic properties of guard intrinsics:

 - Guard intrinsics read all memory, but don't write to any memory
 - After a guard has executed, the condition it was guarding on can be
   assumed to be true
 - Guard intrinsics on a constant `true` are no-ops

Reviewers: reames, hfinkel

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 268120
llvm/lib/Transforms/Scalar/EarlyCSE.cpp
llvm/test/Transforms/EarlyCSE/guards.ll [new file with mode: 0644]