From 97ca0f3f2c398424af53ad9c674230ada79ccda6 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Fri, 9 Oct 2015 20:17:46 +0000 Subject: Generalize convergent check to handle invokes as well as calls. llvm-svn: 249892 --- llvm/lib/Transforms/Scalar/LoopUnswitch.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'llvm/lib/Transforms/Scalar/LoopUnswitch.cpp') diff --git a/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp b/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp index 6d99caf1dff..0f7ce7eb052 100644 --- a/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp +++ b/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp @@ -506,10 +506,10 @@ bool LoopUnswitch::processCurrentLoop() { // FIXME: This could be refined to only bail if the convergent operation is // not already control-dependent on the unswitch value. for (const auto BB : currentLoop->blocks()) { - for (const auto &I : *BB) { - const auto CI = dyn_cast(&I); - if (!CI) continue; - if (CI->isConvergent()) + for (auto &I : *BB) { + auto CS = CallSite(&I); + if (!CS) continue; + if (CS.hasFnAttr(Attribute::Convergent)) return false; } } -- cgit v1.2.3