diff options
author | Tyler Nowicki <tyler.nowicki@gmail.com> | 2015-06-11 23:23:17 +0000 |
---|---|---|
committer | Tyler Nowicki <tyler.nowicki@gmail.com> | 2015-06-11 23:23:17 +0000 |
commit | 9d268e178ec8101fa2a483e6cfc6ddb42c567ce9 (patch) | |
tree | 961172bda0c1243bf5909cf43c5f120ef7625de3 /clang/lib/Sema/SemaStmtAttr.cpp | |
parent | c974a9e50d3a5159ca6552a77eec8cc7491563d6 (diff) | |
download | bcm5719-llvm-9d268e178ec8101fa2a483e6cfc6ddb42c567ce9.tar.gz bcm5719-llvm-9d268e178ec8101fa2a483e6cfc6ddb42c567ce9.zip |
Add assume_safety option for pragma loop vectorize and interleave.
Specifying #pragma clang loop vectorize(assume_safety) on a loop adds the
mem.parallel_loop_access metadata to each load/store operation in the loop. This
metadata tells loop access analysis (LAA) to skip memory dependency checking.
llvm-svn: 239572
Diffstat (limited to 'clang/lib/Sema/SemaStmtAttr.cpp')
-rw-r--r-- | clang/lib/Sema/SemaStmtAttr.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaStmtAttr.cpp b/clang/lib/Sema/SemaStmtAttr.cpp index 19e2c8ed652..5b71c11b529 100644 --- a/clang/lib/Sema/SemaStmtAttr.cpp +++ b/clang/lib/Sema/SemaStmtAttr.cpp @@ -105,6 +105,8 @@ static Attr *handleLoopHintAttr(Sema &S, Stmt *St, const AttributeList &A, if (StateLoc && StateLoc->Ident) { if (StateLoc->Ident->isStr("disable")) State = LoopHintAttr::Disable; + else if (StateLoc->Ident->isStr("assume_safety")) + State = LoopHintAttr::AssumeSafety; else State = LoopHintAttr::Enable; } @@ -159,7 +161,7 @@ CheckForIncompatibleAttributes(Sema &S, const LoopHintAttr *PrevAttr; if (Option == LoopHintAttr::Vectorize || Option == LoopHintAttr::Interleave || Option == LoopHintAttr::Unroll) { - // Enable|disable hint. For example, vectorize(enable). + // Enable|Disable|AssumeSafety hint. For example, vectorize(enable). PrevAttr = CategoryState.StateAttr; CategoryState.StateAttr = LH; } else { |