summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips/MCTargetDesc
diff options
context:
space:
mode:
authorTom Stellard <tstellar@redhat.com>2018-11-16 04:24:44 +0000
committerTom Stellard <tstellar@redhat.com>2018-11-16 04:24:44 +0000
commit77480c54e9028b5aa3ea76b752c4eccaa4809773 (patch)
treecbd8a1076b1303f065de5703376558fa5e47bd02 /llvm/lib/Target/Mips/MCTargetDesc
parent24d841e026a158230561dca5f0d629078d0d965d (diff)
downloadbcm5719-llvm-77480c54e9028b5aa3ea76b752c4eccaa4809773.tar.gz
bcm5719-llvm-77480c54e9028b5aa3ea76b752c4eccaa4809773.zip
Merging r343212:
------------------------------------------------------------------------ r343212 | meinersbur | 2018-09-27 06:39:37 -0700 (Thu, 27 Sep 2018) | 37 lines [IslAst] Fix InParallelFor nesting. IslAst could mark two nested outer loops as "OutermostParallel". It caused that the code generator tried to OpenMP-parallelize both loops, which it is not prepared loop. It was because the recursive AST build algorithm managed a flag "InParallelFor" to ensure that no nested loop is also marked as "OutermostParallel". Unfortunatetly the same flag was used by nodes marked as SIMD, and reset to false after the SIMD node. Since loops can be marked as SIMD inside "OutermostParallel" loops, the recursive algorithm again tried to mark loops as "OutermostParellel" although still nested inside another "OutermostParallel" loop. The fix exposed another bug: The function "astScheduleDimIsParallel" was only called when a loop was potentially "OutermostParallel" or "InnermostParallel", but as a side-effect also determines the minimum dependence distance. Hence, changing when we need to know whether a loop is "OutermostParallel" also changed which loop was annotated with "#pragma minimal dependence distance". Moreover, some complex condition linked with "InParallelFor" determined whether a loop should be an "InnermostParallel" loop. It missed some situations where it would not use mark as such although being inside an SIMD mark node, and therefore not be annotated using "#pragma simd". The changes in particular: 1. Split the "InParallelFor" flag into an "InParallelFor" and an "InSIMD" flag. 2. Unconditionally call "astScheduleDimIsParallel" for its side-effects and store the result in "InParallel" for later use. 3. Simplify the condition when a loop is "InnermostParallel". Fixes llvm.org/PR33153 and llvm.org/PR38073. ------------------------------------------------------------------------ llvm-svn: 347024
Diffstat (limited to 'llvm/lib/Target/Mips/MCTargetDesc')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud