summaryrefslogtreecommitdiffstats
path: root/polly/test/ScopInfo/pointer-used-as-base-pointer-and-scalar-read.ll
Commit message (Collapse)AuthorAgeFilesLines
* [ScopBuilder] Make -polly-stmt-granularity=scalar-indep the default.Michael Kruse2018-02-031-1/+1
| | | | | | | | | | | | | | | | | | | | Splitting basic blocks into multiple statements if there are now additional scalar dependencies gives more freedom to the scheduler, but more statements also means higher compile-time complexity. Switch to finer statement granularity, the additional compile time should be limited by the number of operations quota. The regression tests are written for the -polly-stmt-granularity=bb setting, therefore we add that flag to those tests that break with the new default. Some of the tests only fail because the statements are named differently due to a basic block resulting in multiple statements, but which are removed during simplification of statements without side-effects. Previous commits tried to reduce this effect, but it is not completely avoidable. Differential Revision: https://reviews.llvm.org/D42151 llvm-svn: 324169
* Exploit graph properties during domain generationJohannes Doerfert2016-04-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | As a CFG is often structured we can simplify the steps performed during domain generation. When we push domain information we can utilize the information from a block A to build the domain of a block B, if A dominates B and there is no loop backede on a path from A to B. When we pull domain information we can use information from a block A to build the domain of a block B if B post-dominates A. This patch implements both ideas and thereby simplifies domains that were not simplified by isl. For the FINAL basic block in test/ScopInfo/complex-successor-structure-3.ll we used to build a universe set with 81 basic sets. Now it actually is represented as universe set. While the initial idea to utilize the graph structure depended on the dominator and post-dominator tree we can use the available region information as a coarse grained replacement. To this end we push the region entry domain to the region exit and pull it from the region entry for the region exit if applicable. With this patch we now successfully compile External/SPEC/CINT2006/400_perlbench/400_perlbench and SingleSource/Benchmarks/Adobe-C++/loop_unroll. Differential Revision: http://reviews.llvm.org/D18450 llvm-svn: 265285
* Revert 264782 and 264789Tobias Grosser2016-03-301-1/+1
| | | | | | | | | | | | | | | | | | | These caused LNT failures due to new assertions when running with -polly-position=before-vectorizer -polly-process-unprofitable for: FAIL: clamscan.compile_time FAIL: cjpeg.compile_time FAIL: consumer-jpeg.compile_time FAIL: shapes.compile_time FAIL: clamscan.execution_time FAIL: cjpeg.execution_time FAIL: consumer-jpeg.execution_time FAIL: shapes.execution_time The failures have been introduced by r264782, but r264789 had to be reverted as it depended on the earlier patch. llvm-svn: 264885
* Exploit graph properties during domain generationJohannes Doerfert2016-03-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | As a CFG is often structured we can simplify the steps performed during domain generation. When we push domain information we can utilize the information from a block A to build the domain of a block B, if A dominates B. When we pull domain information we can use information from a block A to build the domain of a block B if B post-dominates A. This patch implements both ideas and thereby simplifies domains that were not simplified by isl. For the FINAL basic block in test/ScopInfo/complex-successor-structure-3.ll . we used to build a universe set with 81 basic sets. Now it actually is represented as universe set. While the initial idea to utilize the graph structure depended on the dominator and post-dominator tree we can use the available region information as a coarse grained replacement. To this end we push the region entry domain to the region exit and pull it from the region entry for the region exit. Differential Revision: http://reviews.llvm.org/D18450 llvm-svn: 264789
* ScopInfo: Never add read accesses for synthesizable valuesMichael Kruse2016-01-271-8/+0
| | | | | | | | | | | | | Before adding a MK_Value READ MemoryAccess, check whether the read is necessary or synthesizable. Synthesizable values are later generated by the SCEVExpander and therefore do not need to be transferred explicitly. This can happen because the check for synthesizability has presumbly been forgotten in the case where a phi's incoming value has been defined in a different statement. Differential Revision: http://reviews.llvm.org/D15687 llvm-svn: 258998
* Update to ISL 0.16.1Michael Kruse2016-01-151-3/+3
| | | | llvm-svn: 257898
* Prepare unit tests for update to ISL 0.16Michael Kruse2016-01-151-49/+49
| | | | | | | | | | | | | | | | | | | | | ISL 0.16 will change how sets are printed which breaks 117 unit tests that text-compare printed sets. This patch re-formats most of these unit tests using a script and small manual editing on top of that. When actually updating ISL, most work is done by just re-running the script to adapt to the changed output. Some tests that compare IR and tests with single CHECK-lines that can be easily updated manually are not included here. The re-format script will also be committed afterwards. The per-test formatter invocation command lines options will not be added in the near future because it is ad hoc and would overwrite the manual edits. Ideally it also shouldn't be required anymore because ISL's set printing has become more stable in 0.16. Differential Revision: http://reviews.llvm.org/D16095 llvm-svn: 257851
* Consistenly use getTypeAllocSize for size estimation.Johannes Doerfert2015-11-121-8/+8
| | | | | | | | | Only when we check for wrapping we want to use the store size, for all other cases we use the alloc size now. Suggested by: Tobias Grosser <tobias@grosser.es> llvm-svn: 252941
* tests: Add test that has a single pointer both as scalar read and array baseTobias Grosser2015-11-101-0/+88
In case we also model scalar reads it can happen that a pointer appears in both a scalar read access as well as the base pointer of an array access. As this is a little surprising, we add a specific test case to document this behaviour. To my understanding it should be OK to have a read from an array A[] and read/write accesses to A[...]. isl is treating these arrays as unrelated as their dimensionality differs. This seems to be correct as A[] remains constant throughout the execution of the scop and is not affected by the reads/writes to A[...]. If this causes confusion, it might make sense to make this behaviour more obvious by using different names (e.g., A_scalar[], A[...]). llvm-svn: 252615
OpenPOWER on IntegriCloud