diff options
| author | Justin Lebar <jlebar@google.com> | 2016-02-12 21:01:31 +0000 |
|---|---|---|
| committer | Justin Lebar <jlebar@google.com> | 2016-02-12 21:01:31 +0000 |
| commit | 144c5a6c154b3d639709c59892a41139aadc5032 (patch) | |
| tree | 2e29fcd8d1c5cdfb97c54849cd6a13315d525e9f | |
| parent | 531b24b53a90928e6d9e628c1b2ba3871fa5dd74 (diff) | |
| download | bcm5719-llvm-144c5a6c154b3d639709c59892a41139aadc5032.tar.gz bcm5719-llvm-144c5a6c154b3d639709c59892a41139aadc5032.zip | |
Add convergent property to CodeMetrics.
Summary: No functional changes.
Reviewers: jingyue, arsenm
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D17126
llvm-svn: 260728
| -rw-r--r-- | llvm/include/llvm/Analysis/CodeMetrics.h | 3 | ||||
| -rw-r--r-- | llvm/lib/Analysis/CodeMetrics.cpp | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/llvm/include/llvm/Analysis/CodeMetrics.h b/llvm/include/llvm/Analysis/CodeMetrics.h index 5f6b0586c24..f512aca5786 100644 --- a/llvm/include/llvm/Analysis/CodeMetrics.h +++ b/llvm/include/llvm/Analysis/CodeMetrics.h @@ -53,6 +53,9 @@ struct CodeMetrics { /// one or more 'noduplicate' instructions. bool notDuplicatable = false; + /// \brief True if this function contains a call to a convergent function. + bool convergent = false; + /// \brief True if this function calls alloca (in the C sense). bool usesDynamicAlloca = false; diff --git a/llvm/lib/Analysis/CodeMetrics.cpp b/llvm/lib/Analysis/CodeMetrics.cpp index 4090b4cd752..035717aa613 100644 --- a/llvm/lib/Analysis/CodeMetrics.cpp +++ b/llvm/lib/Analysis/CodeMetrics.cpp @@ -152,9 +152,12 @@ void CodeMetrics::analyzeBasicBlock(const BasicBlock *BB, if (II->getType()->isTokenTy() && II->isUsedOutsideOfBlock(BB)) notDuplicatable = true; - if (const CallInst *CI = dyn_cast<CallInst>(II)) + if (const CallInst *CI = dyn_cast<CallInst>(II)) { if (CI->cannotDuplicate()) notDuplicatable = true; + if (CI->isConvergent()) + convergent = true; + } if (const InvokeInst *InvI = dyn_cast<InvokeInst>(II)) if (InvI->cannotDuplicate()) |

