aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorSameer Sahasrabuddhe <sameer.sahasrabuddhe@amd.com>2021-03-25 11:27:10 +0000
committerSameer Sahasrabuddhe <sameer.sahasrabuddhe@amd.com>2021-03-25 11:27:10 +0000
commitb92c8c22b924969fe6cbe1b9faf874333d4eafd0 (patch)
tree776d0b339ad0003bc0997d7ac2fe176f51a2f765 /clang/lib/Frontend/CompilerInvocation.cpp
parent1e56e8717f09cc287d2c1329d4009ae38acfa54c (diff)
downloadllvm-b92c8c22b924969fe6cbe1b9faf874333d4eafd0.zip
llvm-b92c8c22b924969fe6cbe1b9faf874333d4eafd0.tar.gz
llvm-b92c8c22b924969fe6cbe1b9faf874333d4eafd0.tar.bz2
[NewPM] Disable non-trivial loop-unswitch on targets with divergence
Unswitching a loop on a non-trivial divergent branch is expensive since it serializes the execution of both version of the loop. But identifying a divergent branch needs divergence analysis, which is a function level analysis. The legacy pass manager handles this dependency by isolating such a loop transform and rerunning the required function analyses. This functionality is currently missing in the new pass manager, and there is no safe way for the SimpleLoopUnswitch pass to depend on DivergenceAnalysis. So we conservatively assume that all non-trivial branches are divergent if the target has divergence. Reviewed By: tra Differential Revision: https://reviews.llvm.org/D98958
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions