summaryrefslogtreecommitdiff
path: root/polly
AgeCommit message (Collapse)Author
2019-01-15Remove irrelevant references to legacy git repositories fromJames Y Knight
compiler identification lines in test-cases. (Doing so only because it's then easier to search for references which are actually important and need fixing.)
2019-01-15Update year in license filesHans Wennborg
In last year's update (D48219) it was suggested that the release manager might want to do this, so here we go.
2018-11-06[CMake] Fix generation of exported targets in build directoryPhilip Pfaffe
CMake generates the exports file wrongly if the CMAKE_BUILD_TYPE is unset for multi-configuration generators. The generated file lib/cmake/polly/PollyExports-all.cmake then contains: set_target_properties(LLVMPolly PROPERTIES IMPORTED_LOCATION_ my_build_dir/lib/LLVMPolly.so) set_target_properties(Polly PROPERTIES IMPORTED_LOCATION_ my_build_dir/lib/libPolly.a) This patch conditionalizes the underscore. Patch by: Marcin Copik Differential Revision: D53376
2018-11-01Fix clang -Wimplicit-fallthrough warnings across llvm, NFCReid Kleckner
This patch should not introduce any behavior changes. It consists of mostly one of two changes: 1. Replacing fall through comments with the LLVM_FALLTHROUGH macro 2. Inserting 'break' before falling through into a case block consisting of only 'break'. We were already using this warning with GCC, but its warning behaves slightly differently. In this patch, the following differences are relevant: 1. GCC recognizes comments that say "fall through" as annotations, clang doesn't 2. GCC doesn't warn on "case N: foo(); default: break;", clang does 3. GCC doesn't warn when the case contains a switch, but falls through the outer case. I will enable the warning separately in a follow-up patch so that it can be cleanly reverted if necessary. Reviewers: alexfh, rsmith, lattner, rtrieu, EricWF, bollu Differential Revision: https://reviews.llvm.org/D53950
2018-10-18[TI removal] Generically discuss terminators rather than use the soon toChandler Carruth
vanish subclass name.
2018-10-17Fix broken formatting caused by test commitTheodoros Theodoridis
2018-10-17Test commitTheodoros Theodoridis
2018-10-15[TI removal] Make `getTerminator()` return a generic `Instruction`.Chandler Carruth
This removes the primary remaining API producing `TerminatorInst` which will reduce the rate at which code is introduced trying to use it and generally make it much easier to remove the remaining APIs across the codebase. Also clean up some of the stragglers that the previous mechanical update of variables missed. Users of LLVM and out-of-tree code generally will need to update any explicit variable types to handle this. Replacing `TerminatorInst` with `Instruction` (or `auto`) almost always works. Most of these edits were made in prior commits using the perl one-liner: ``` perl -i -ple 's/TerminatorInst(\b.* = .*getTerminator\(\))/Instruction\1/g' ``` This also my break some rare use cases where people overload for both `Instruction` and `TerminatorInst`, but these should be easily fixed by removing the `TerminatorInst` overload.
2018-10-12Fix another error related to YAML quoting.Zachary Turner
This one occured in polly, which I didn't build / test the first time so I didn't catch it.
2018-09-27[IslAst] Fix InParallelFor nesting.Michael Kruse
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.
2018-09-26[doc] Fix HowToManuallyUseTheIndividualPiecesOfPollyMichael Kruse
Also remove compiled binaries.
2018-09-26Move www/experiments to docs/experimentsMichael Kruse
2018-09-21fix the scan-build urlsSylvestre Ledru
2018-09-11[ScopDetection] Use addUnknown for calls in the AliasSetTracker.Eli Friedman
The general-purpose add() now sometimes adds unexpected loop-variant pointers to the AliasSetTracker, so certain loops would be rejected with -polly-allow-modref-calls. Use addUnknown() instead, which has the old behavior. I'm not completely convinced the resulting behavior is actually correct: ScopDetection::isValidAccess seems to mostly ignore "unknown" instructions in the AliasSetTracker. But it's not any worse than what was happening before. Committing without pre-commit review to unbreak the buildbots; the following tests were failing: test/ScopInfo/mod_ref_access_pointee_arguments.ll test/ScopInfo/mod_ref_read_pointee_arguments.ll test/ScopInfo/multidim_2d_with_modref_call_2.ll
2018-09-11 [PerfMonitor] Fix rdtscp callsitesTobias Grosser
Summary: Update all rdtscp callsites in PerfMonitor so that they conform with the signature changes introduced in r341698. Reviewers: grosser, bollu Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D51928
2018-08-26[IR] Replace `isa<TerminatorInst>` with `isTerminator()`.Chandler Carruth
This is a bit awkward in a handful of places where we didn't even have an instruction and now we have to see if we can build one. But on the whole, this seems like a win and at worst a reasonable cost for removing `TerminatorInst`. All of this is part of the removal of `TerminatorInst` from the `Instruction` type hierarchy.
2018-08-17[AST] Adapt Polly to AnalysisSetTracker changes. NFC.Michael Kruse
The method AliasSetTracker::getAliasSetForPointer was removed and replaced by AliasSetTracker::getAliasSetFor for the restructuring in r339930. Since Polly uses AliasSetTracker::getAliasSetForPointer, a temporary fix has been committed in r339937 with a comment: Can someone from polly please migrate usage and then delete the wrapper? This commit is doing exactly that.
2018-08-10[DepInfo] Use isl++ in Dependences::isValidSchedule. NFC.Michael Kruse
Also change StatementToIslMapTy to hold isl::map, because it is used as a parameter.
2018-08-09Update isl-cpp bindingsTobias Grosser
We upstreamed the export of isl_val_2exp, to the official cpp bindings. In this process, we concluded that pow2 is a better and more widely used name for this functionality. Hence, both the official isl-cpp bindings and our derived variant use now the term pow2.
2018-08-09Update to isl-0.20-65-gb822a210Tobias Grosser
This update fixes https://https:/llvm.org/PR38348. Thanks Michael for reporting the issue to isl and Sven for fixing the issue.
2018-08-07Update isl to isl-0.20-48-g13eba5b5Tobias Grosser
This is a regular maintenance updated.
2018-08-07Make update-isl work with latest isl versionsTobias Grosser
Latest isl versions require clang to build a 'dist' package. Make sure we actually ask for it. While being there, also make sure we build isl on all cores.
2018-08-02[JSONExporter] Print instead of ignoring parser error.Michael Kruse
Silence the warning warning: ignoring return value of function declared with 'warn_unused_result' attribute [-Wunused-result] JSONExporter is a developer tool, there is no mechanism for error handling. Print the parser error and abort with a fatal error.
2018-08-01[ScopBuilder] Set domain to empty instead of NULL.Michael Kruse
The domain generation used nullptr to mark the domain of an error block as never-executed. Later, nullptr domains are recreated with a zero-tuple domain that then mismatches with the expected domain the error block within the loop. Instead of using nullptr, assign an empty domain which preserves the expected space. Remove empty domains during SCoP simplification. Fixes llvm.org/PR38218.
2018-08-01Update docs version and clear release notes after 8.0.0 version bumpHans Wennborg
2018-08-01PPCG codegenTobias Grosser
The latest version of the isl C++ bindings does not export the 'set' method yet. Fall back to the C interface until this method can be exported.
2018-08-01[isl++] drop the isl namespace qualifiers [NFC]Tobias Grosser
These namespace qualifiers are not needed. Dropping them brings us closer to the official isl namespace qualifiers. While the delta of this change set is large, it only mechanically drops the 'isl::' prefixes.
2018-08-01Rebase C++ bindings on top of latest isl bindingsTobias Grosser
The main difference in this change is that isl_stat is now always checked by default. As we elminiated most used of isl_stat, thanks to Philip Pfaffe's implementation of foreach, only a small set of changes is needed. This change does not include the following recent changes to isl's C++ bindings: - stricter error handling for isl_bool - dropping of the isl::namespace qualifiers The former requires a larger patch in Polly and consequently should go through a patch-review. The latter will be applied in the next commit to keep this commit free from noise. We also still apply a couple of other changes on top of the official isl bindings. This delta is expected to shrink over time.
2018-08-01Update to isl-0.20-35-ge0a98b62Tobias Grosser
2018-08-01[JSONExporter] Try to appease buildbot. NFC.Michael Kruse
The compiler does not seem to able move a local variable in the function's return statement.
2018-08-01[Polly-ACC] Fix compilation after r338450. NFC.Michael Kruse
2018-08-01[JSONExporter] Replace bundled Jsoncpp with llvm/Support/JSON.h. NFC.Michael Kruse
Differential Revision: https://reviews.llvm.org/D49950
2018-07-31[CodeGen] Convert IslNodeBuilder::getNumberOfIterations to isl++. NFC.Michael Kruse
2018-07-31[CodeGen] Convert IslNodeBuilder::createForSequential to isl++. NFC.Michael Kruse
2018-07-31[CodeGen] Convert IslNodeBuilder::getUpperBound to isl++. NFC.Michael Kruse
2018-07-28[test] Remove non-JSPON comments in JSCOP file. NFC.Michael Kruse
2018-07-23[isl] Simplify iterator implementation by building on top of list accessorsPhilip Pfaffe
Summary: With the new accessors, it's straightforward to use the templated iterator instead of subclassing it for all the list types. Depends on D49019 Reviewers: grosser, Meinersbur, bollu Reviewed By: grosser Subscribers: mehdi_amini, steven_wu, dexonsmith, pollydev, llvm-commits Differential Revision: https://reviews.llvm.org/D49021
2018-07-17[DependenceInfo] Use isl++ to replace foreach_set with for loopTobias Grosser
2018-07-17[IslNodeBuilder] Use isl++ to replace foreach_set with for loopTobias Grosser
2018-07-17[ScopInfo] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[ZoneAlgo] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[FlattenSchedule] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[MaximalStaticExpansion] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[ForwardOpTree] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[Simplify] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[FlattenAlgo] Replace more isl foreach calls with for loopsTobias Grosser
This time we replace for loops where the return isl::stat::error has been used to carry status information. There are still two uses of foreach remaining as we do not have a corresponding for implementation for pw_aff functions.
2018-07-17[FlattenAlgo] Replace some isl foreach calls with for loopsTobias Grosser
Replace foreach calls which only return 'ok' with for loops.
2018-07-17[unittest/DeLICM] Replace isl foreach calls with for loopsTobias Grosser
2018-07-16[ScopInfo] Replace isl foreach calls with for loopsTobias Grosser
After Philip added support for range-based for loops to our C++ bindings, we now convert another bunch of foreach calls to range-for loops. This improves general readability of the code.
2018-07-13[Polly][isl] Add neutrally-named accessors to isl list elements and sizesPhilip Pfaffe
Summary: This could simplify the isl iterator implementation a lot. Reviewers: grosser, Meinersbur, bollu Reviewed By: grosser Subscribers: pollydev, llvm-commits Differential Revision: https://reviews.llvm.org/D49019