From 2e59a125fce4235beeb4e72cafbcbe62854ed77c Mon Sep 17 00:00:00 2001 From: Pekka Jaaskelainen Date: Tue, 23 Apr 2013 16:44:43 +0000 Subject: [PATCH] Call the potentially costly isAnnotatedParallel() only once. Made the uniform write test's checks a bit stricter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180119 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Vectorize/LoopVectorize.cpp | 8 +++++--- .../X86/illegal-parallel-loop-uniform-write.ll | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/Transforms/Vectorize/LoopVectorize.cpp b/lib/Transforms/Vectorize/LoopVectorize.cpp index 2e42585e35a..162587c5659 100644 --- a/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -2556,6 +2556,8 @@ bool LoopVectorizationLegality::canVectorizeMemory() { PtrRtCheck.Pointers.clear(); PtrRtCheck.Need = false; + const bool IsAnnotatedParallel = TheLoop->isAnnotatedParallel(); + // For each block. for (Loop::block_iterator bb = TheLoop->block_begin(), be = TheLoop->block_end(); bb != be; ++bb) { @@ -2570,7 +2572,7 @@ bool LoopVectorizationLegality::canVectorizeMemory() { if (it->mayReadFromMemory()) { LoadInst *Ld = dyn_cast(it); if (!Ld) return false; - if (!Ld->isSimple() && !TheLoop->isAnnotatedParallel()) { + if (!Ld->isSimple() && !IsAnnotatedParallel) { DEBUG(dbgs() << "LV: Found a non-simple load.\n"); return false; } @@ -2582,7 +2584,7 @@ bool LoopVectorizationLegality::canVectorizeMemory() { if (it->mayWriteToMemory()) { StoreInst *St = dyn_cast(it); if (!St) return false; - if (!St->isSimple() && !TheLoop->isAnnotatedParallel()) { + if (!St->isSimple() && !IsAnnotatedParallel) { DEBUG(dbgs() << "LV: Found a non-simple store.\n"); return false; } @@ -2629,7 +2631,7 @@ bool LoopVectorizationLegality::canVectorizeMemory() { ReadWrites.insert(std::make_pair(Ptr, ST)); } - if (TheLoop->isAnnotatedParallel()) { + if (IsAnnotatedParallel) { DEBUG(dbgs() << "LV: A loop annotated parallel, ignore memory dependency " << "checks.\n"); diff --git a/test/Transforms/LoopVectorize/X86/illegal-parallel-loop-uniform-write.ll b/test/Transforms/LoopVectorize/X86/illegal-parallel-loop-uniform-write.ll index bc606f3ebda..20b0c742152 100644 --- a/test/Transforms/LoopVectorize/X86/illegal-parallel-loop-uniform-write.ll +++ b/test/Transforms/LoopVectorize/X86/illegal-parallel-loop-uniform-write.ll @@ -4,7 +4,8 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3 target triple = "x86_64-unknown-linux-gnu" ;CHECK: @foo -;CHECK-NOT: <4 x +;CHECK-NOT: <4 x i32> +;CHECK: ret void ; Function Attrs: nounwind uwtable define void @foo(i32* nocapture %a, i32* nocapture %b, i32 %k, i32 %m) #0 {