Don't tail-duplicate blocks that contain convergent instructions.
authorJustin Lebar <jlebar@google.com>
Mon, 22 Feb 2016 17:50:52 +0000 (17:50 +0000)
committerJustin Lebar <jlebar@google.com>
Mon, 22 Feb 2016 17:50:52 +0000 (17:50 +0000)
commit5b82c9ba31a05ce22a244e8b4ab6a345c9e8aecc
treeeff84d8ae07bc46d975704a62f294a750190c714
parent595e8ab22d72283ea2377abfbd6f3ff691391e97
Don't tail-duplicate blocks that contain convergent instructions.

Summary:
Convergent instrs shouldn't be made control-dependent on other values,
but this is basically the whole point of tail duplication.  So just bail
if we see a convergent instruction.

Reviewers: iteratee

Subscribers: jholewinski, jhen, hfinkel, tra, jingyue, llvm-commits

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

llvm-svn: 261540
llvm/lib/CodeGen/TailDuplication.cpp
llvm/test/CodeGen/NVPTX/TailDuplication-convergent.ll [new file with mode: 0644]