summaryrefslogtreecommitdiffstats
path: root/polly/lib/External
Commit message (Collapse)AuthorAgeFilesLines
...
* [isl++] Move isl raw_ostream printers into separate headerTobias Grosser2017-05-211-156/+0
| | | | | | | | Instead of relying on these functions to be part of the isl C++ bindings, we just define this functionality independently. This allows us to use isl C++ bindings that do not contain LLVM specific functionality. llvm-svn: 303503
* Update to isl-0.18-592-gb50ad59Tobias Grosser2017-04-2828-331/+419
| | | | | | This is just a general maintenance update. llvm-svn: 301624
* Update to isl-0.18-423-g30331feTobias Grosser2017-04-264-3/+16
| | | | | | This is just a general maintenance update. llvm-svn: 301433
* [isl C++ bindings] Add explicit const casts for *foreach* bindingsTobias Grosser2017-04-231-7/+7
| | | | | | | This avoids a compiler warning about lost 'const' attributes. Suggested-by: Michael Kruse <llvm@meinersbur.de> llvm-svn: 301108
* Update isl bindings to latest version (+ Polly extensions)Tobias Grosser2017-04-151-81/+85
| | | | | | | | | After the isl C++ binding generator is now close to being upstreamed to isl, we synchronize the latest changes to Polly. These are mostly formatting changes plus a small interface change for the foreach callback function and some naming changes in isl::boolean. llvm-svn: 300398
* Update to isl-0.18-417-gb9e7334Tobias Grosser2017-04-0613-413/+425
| | | | | | This is a regular maintenance update. llvm-svn: 299617
* Update to isl-0.18-410-gc253447Tobias Grosser2017-04-038-69/+103
| | | | | | | This is a regular maintenance update to ensure latest isl changes are tested in our buildbots. llvm-svn: 299350
* Update to isl-0.18-402-ga30c537Tobias Grosser2017-03-239-17/+41
| | | | | | This is a regular maintenance update. llvm-svn: 298595
* Update isl to isl-0.18-395-g77701b3Tobias Grosser2017-03-2114-17/+81
| | | | | | This is a normal maintenance update. llvm-svn: 298352
* Update to isl-0.18-387-g3fa6191Tobias Grosser2017-03-163-55/+62
| | | | | | This is a normal / regular maintenance update. llvm-svn: 297999
* Preserve the isl-noexceptions.h C++ bindings when updating islTobias Grosser2017-03-141-0/+3
| | | | | | | | | The bindings currently need to be generated manually, as they are not yet part of the official isl distribution. Hence, we keep them across updates assuming they only need to be updated when new functions or functionality should be exposed. llvm-svn: 297710
* Add back header file that was accidentally dropped in previous updateTobias Grosser2017-03-141-0/+5588
| | | | llvm-svn: 297709
* Update to isl-0.18-369-g5e613c6Tobias Grosser2017-03-1416-5726/+265
| | | | | | This is a regular maintenance update. llvm-svn: 297708
* [isl++] Add missing /* implicit */ markerTobias Grosser2017-03-121-1/+1
| | | | llvm-svn: 297577
* [isl++] Add last set of missing isl:: prefixes to increase consistency [NFC]Tobias Grosser2017-03-111-309/+310
| | | | llvm-svn: 297558
* [isl++] Add namespace prefixes to isl::ctx and isl::statTobias Grosser2017-03-101-91/+91
| | | | | | These were missed in r297478. We add them for consistency. llvm-svn: 297520
* [isl++] Drop warning about experimental statusTobias Grosser2017-03-101-8/+0
| | | | | | | | | As most discussions about these bindings have concluded and only the final patch review on the isl mailing list is missing, we drop the experimental warning tag to match the patchset we will submit to isl, which is expected to not change notably any more. llvm-svn: 297519
* [isl++] Do not use enum prefixTobias Grosser2017-03-101-750/+750
| | | | | | | | | | | | | | | | | | | | | | | | Instead of declaring a function as: inline val plain_get_val_if_fixed(enum dim type, unsigned int pos) const; we use: inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const; The first argument caused the following compile time error on windows: "error C3431: 'dim': a scoped enumeration cannot be redeclared as an unscoped enumeration" In some cases it is sufficient to just drop the 'enum' prefix, but for example for isl::set the 'enum class dim' type collides with the function name isl::set::dim and can consequently not be referenced. To avoid such kind of ambiguities in the future we add the isl:: prefix consistently to all types used. Reported-by: Michael Kruse <llvm@meinersbur.de> llvm-svn: 297478
* Add method interface to isl C++ bindingsTobias Grosser2017-03-101-0/+2458
| | | | | | | | | | | | | | | | | | The isl C++ binding method interface introduces a thin C++ layer that allows to call isl methods directly on the memory managed C++ objects. This makes the relevant methods directly available via code-completion interfaces, allows for the use of overloading, conversion constructors, and many other nice C++ features that make using isl a lot easier. The individual features will be highlighted in the subsequent commits. Tags: #polly Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D30616 llvm-svn: 297462
* Introduce isl C++ bindings, Part 1: value_ptr style interfaceTobias Grosser2017-03-101-0/+3137
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Over the last couple of months several authors of independent isl C++ bindings worked together to jointly design an official set of isl C++ bindings which combines their experience in developing isl C++ bindings. The new bindings have been designed around a value pointer style interface and remove the need for explicit pointer managenent and instead use C++ language features to manage isl objects. This commit introduces the smart-pointer part of the isl C++ bindings and replaces the current IslPtr<T> classes, which served the very same purpose, but had to be manually maintained. Instead, we now rely on automatically generated classes for each isl object, which provide value_ptr semantics. An isl object has the following smart pointer interface: inline set manage(__isl_take isl_set *ptr); class set { friend inline set manage(__isl_take isl_set *ptr); isl_set *ptr = nullptr; inline explicit set(__isl_take isl_set *ptr); public: inline set(); inline set(const set &obj); inline set &operator=(set obj); inline ~set(); inline __isl_give isl_set *copy() const &; inline __isl_give isl_set *copy() && = delete; inline __isl_keep isl_set *get() const; inline __isl_give isl_set *release(); inline bool is_null() const; } The interface and behavior of the new value pointer style classes is inspired by http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3339.pdf, which proposes a std::value_ptr, a smart pointer that applies value semantics to its pointee. We currently only provide a limited set of public constructors and instead require provide a global overloaded type constructor method "isl::obj isl::manage(isl_obj *)", which allows to convert an isl_set* to an isl::set by calling 'S = isl::manage(s)'. This pattern models the make_unique() constructor for unique pointers. The next two functions isl::obj::get() and isl::obj::release() are taken directly from the std::value_ptr proposal: S.get() extracts the raw pointer of the object managed by S. S.release() extracts the raw pointer of the object managed by S and sets the object in S to null. We additionally add std::obj::copy(). S.copy() returns a raw pointer refering to a copy of S, which is a shortcut for "isl::obj(oldobj).release()", a functionality commonly needed when interacting directly with the isl C interface where all methods marked with __isl_take require consumable raw pointers. S.is_null() checks if S manages a pointer or if the managed object is currently null. We add this function to provide a more explicit way to check if the pointer is empty compared to a direct conversion to bool. This commit also introduces a couple of polly-specific extensions that cover features currently not handled by the official isl C++ bindings draft, but which have been provided by IslPtr<T> and are consequently added to avoid code churn. These extensions include: - operator bool() : Conversion from objects to bool - construction from nullptr_t - get_ctx() method - take/keep/give methods, which match the currently used naming convention of IslPtr<T> in Polly. They just forward to (release/get/manage). - raw_ostream printers We expect that these extensions are over time either removed or upstreamed to the official isl bindings. We also export a couple of classes that have not yet been exported in isl (e.g., isl::space) As part of the code review, the following two questions were asked: - Why do we not use a standard smart pointer? std::value_ptr was a proposal that has not been accepted. It is consequently not available in the standard library. Even if it would be available, we want to expand this interface with a complete method interface that is conveniently available from each managed pointer. The most direct way to achieve this is to generate a specialiced value style pointer class for each isl object type and add any additional methods to this class. The relevant changes follow in subsequent commits. - Why do we not use templates or macros to avoid code duplication? It is certainly possible to use templates or macros, but as this code is auto-generated there is no need to make writing this code more efficient. Also, most of these classes will be specialized with individual member functions in subsequent commits, such that there will be little code reuse to exploit. Hence, we decided to do so at the moment. These bindings are not yet officially part of isl, but the draft is already very stable. The smart pointer interface itself did not change since serveral months. Adding this code to Polly is against our normal policy of only importing official isl code. In this case however, we make an exception to showcase a non-trivial use case of these bindings which should increase confidence in these bindings and will help upstreaming them to isl. Tags: #polly Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D30325 llvm-svn: 297452
* Update to isl-0.18-356-g0b05d01Tobias Grosser2017-03-1014-110/+287
| | | | | | This is a regular maintenance update. llvm-svn: 297449
* Update isl to isl-0.18-336-g1e193d9Tobias Grosser2017-03-0714-601/+36
| | | | | | This is a regular maintenance update llvm-svn: 297169
* Update isl to isl-0.18-304-g1efe43dTobias Grosser2017-02-288-365/+15
| | | | | | This is a normal maintenance update. llvm-svn: 296441
* [Cmake] Optionally use a system isl version.Michael Kruse2017-02-271-146/+150
| | | | | | | | | | | | | | | This patch adds an option to build against a version of libisl already installed on the system. The installation is autodetected using the pkg-config file shipped with isl. The detection of the library is in the FindISL.cmake module that creates an imported target. Contributed-by: Philip Pfaffe <philip.pfaffe@gmail.com> Differential Revision: https://reviews.llvm.org/D30043 llvm-svn: 296361
* Update isl to isl-0.18-282-g12465a5Tobias Grosser2017-02-2321-57/+316
| | | | | | | Besides a variety of smaller cleanups, this update also contains a correctness fix to isl coalesce which resolves a crash in Polly. llvm-svn: 295966
* [Cmake] Install the isl headers into the install tree.Michael Kruse2017-02-201-0/+14
| | | | | | | | | | | | | | | | | | | | isl headers are currently missing in a Polly installation. Because the Polly headers depend on those, code can't be compiled against an installed Polly. This patch installs the isl headers. I left a TODO, as optionally it should be possible to use a system version of isl instead of the one shipped with Polly. When compiling, clients of the installation need to add -I${PREFIX}/include/polly/ to there include path right now, because there currently is no way to export this path automatically. Contributed-by: Philip Pfaffe <philip.pfaffe@gmail.com> Differential Revision: https://reviews.llvm.org/D29931 llvm-svn: 295671
* Updated isl to isl-0.18-254-g6bc184dTobias Grosser2017-02-1790-1726/+2481
| | | | | | | This update includes a couple more coalescing changes as well as a large number of isl-internal code cleanups (dead assigments, ...). llvm-svn: 295419
* [External] Move lib/JSON to lib/External/JSON. NFC.Michael Kruse2017-02-0517-0/+6522
| | | | | | For consistency with isl and ppcg which are already in lib/External. llvm-svn: 294126
* Do not track the isl PDF manual in SVNTobias Grosser2017-01-161-0/+0
| | | | | | | | There is no point in regularly committing a binary file to the repository, as this just unnecessarily increases the repository size. Interested people can find the isl manual for example at isl.gforge.inria.fr/manual.pdf. llvm-svn: 292105
* Update to isl-0.18-43-g0b4256fTobias Grosser2016-12-3115-331/+717
| | | | | | Even more isl coalesce changes. llvm-svn: 290783
* Update to isl-0.18-28-gccb9f33Tobias Grosser2016-12-286-44/+512
| | | | | | Another set of isl coalesce changes. llvm-svn: 290681
* Update to isl-0.18-17-g2844ebfTobias Grosser2016-12-264-86/+200
| | | | | | | This update improves isl's ability to coalesce different convex sets/maps, especially when the contain existentially quantified variables. llvm-svn: 290538
* Update isl to isl-0.18-9-gd4734f3Tobias Grosser2016-12-2222-202/+370
| | | | llvm-svn: 290389
* Update to isl-0.17.1-314-g3106e8dMichael Kruse2016-12-0625-150/+488
| | | | | | | | | | | | This version includes an update for imath (isl-0.17.1-49-g2f1c129). It fixes the compilation under windows, which does not know ssize_t. In addition, isl-0.17.1-288-g0500299 changed the way isl_test finds the source directory. It now generates a file isl_srcdir.c at configure-time, containing the source path, to not require setting the environment variable "srcdir" at test-time. The cmake build system had to be modified to also generate that file. llvm-svn: 288811
* Update to isl-0.17.1-284-gbb38638Tobias Grosser2016-11-2211-72/+152
| | | | | | Regular maintenance update with only minor changes. llvm-svn: 287703
* Minor changeHongbin Zheng2016-11-211-1/+1
| | | | llvm-svn: 287562
* Update to isl-0.17.1-267-gbf9723dTobias Grosser2016-11-1634-284/+485
| | | | | | | This update corrects an incorrect generation of min/max expressions in the isl AST generator and a problematic nullptr dereference. llvm-svn: 287098
* Update isl to isl-0.17.1-243-g24c0339Tobias Grosser2016-11-0413-155/+193
| | | | | | | This introduces big-endian support in imath and resolves http://llvm.org/PR24632. llvm-svn: 285993
* [cmake] Avoid warnings in feature tests. NFC.Michael Kruse2016-10-201-5/+5
| | | | | | | | | | Apply the __attribute__((unused)) before the function to unambiguously apply to the function declaration. Add more casts-to-void to mark return values unused as intended. Contributed-by: Andy Gibbs <andyg1001@hotmail.co.uk> llvm-svn: 284718
* Update isl to isl-0.17.1-236-ga9c6cc7Tobias Grosser2016-10-207-3/+43
| | | | | | This includes isl_id_to_str, which is used in Michael's upcoming DeLICM patch. llvm-svn: 284689
* cmake: avoid "zero-length gnu_printf format string" warning in gcc 6.1.1Tobias Grosser2016-10-151-2/+2
| | | | | Contributed-by: Andy Gibbs <andyg1001@hotmail.co.uk> llvm-svn: 284302
* Define PATH_MAX on windowsHongbin Zheng2016-10-071-0/+6
| | | | | | Differential Revision: https://reviews.llvm.org/D25372 llvm-svn: 283600
* [cmake] Unify disabling upstream project warnings.Michael Kruse2016-10-071-25/+14
| | | | | | | | Handle MSVC, ISL and PPCG in one place. The only functional change is that warnings are also disabled for MSVC compiling PPCG (Which currently fails anyway). llvm-svn: 283547
* [cmake] Move isl_test artifacts to Polly folder.Michael Kruse2016-10-071-0/+1
| | | | | | | Folders in Visual Studio solutions help organize the build artifacts from all LLVM projects. There is a folder to keep Polly-built files in. llvm-svn: 283546
* Build and run isl_test as part of check-pollyTobias Grosser2016-10-041-1/+15
| | | | | | | | | | | | | | | | | | | | Running isl tests is important to gain confidence that the isl build we created works as expected. Besides the actual isl tests, there are also isl AST generation tests shipped with isl. This change only adds support for the isl unit tests. AST generation test support is left for a later commit. There is a choice to run tests directly through the build system or in the context of lit. We choose to run tests as part of lit to as this allows us to easily set environment variables, print output only on error and generally run the tests directly from the lit command. Reviewers: brad.king, Meinersbur Subscribers: modocache, brad.king, pollydev, beanz, llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D25155 llvm-svn: 283245
* isl: update to isl-0.17.1-233-gc911e6aTobias Grosser2016-10-0121-517/+1168
| | | | llvm-svn: 283049
* cmake: PollyPPCG depends on PollyISLTobias Grosser2016-09-131-0/+2
| | | | | | | This line makes BUILD_SHARED_LIBS=ON work for Polly-ACC. Without it, ld complains about missing isl symbols when constructing the shared library. llvm-svn: 281396
* Remove -fvisibility=hidden and FORCE_STATIC.Michael Kruse2016-09-121-14/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | The flag -fvisibility=hidden flag was used for the integrated Integer Set Library (and PPCG) to keep their definitions local to Polly. The motivation was the be loaded into a DragonEgg-powered GCC, where GCC might itself use ISL for its Graphite extension. The symbols of Polly's ISL and GCC's ISL would clash. The DragonEgg project is not actively developed anymore, but Polly's unittests need to call ISL functions to set up a testing environment. Unfortunately, the -fvisibility=hidden flag means that the ISL symbols are not available to the gtest executable as it resides outside of libPolly when linked dynamically. Currently, CMake links a second copy of ISL into the unittests which leads to subtle bugs. What got observed is that two isl_ids for isl_id_none exist, one for each library instance. Because isl_id's are compared by address, isl_id_none could happen to be different from isl_id_none, depending on which library instance set the address and does the comparison. Also remove the FORCE_STATIC flag which was introduced to keep the ISL symbols visible inside the same libPolly shared object, even when build with BUILD_SHARED_LIBS. Differential Revision: https://reviews.llvm.org/D24460 llvm-svn: 281242
* Disable MSVC warnings on ISL.Michael Kruse2016-09-071-0/+11
| | | | | | | | Disable some Visual C++ warnings on ISL. These are not reported by GCC/Clang in the ISL build system. We do not intend to fix them in the Polly in-tree copy, hence disable these warnings. llvm-svn: 280811
* Update ISL to isl-0.17.1-203-g3fef898.Michael Kruse2016-09-015-4/+20
| | | | | | This version has isl_space_has_equal_tuples added to the public API. llvm-svn: 280341
OpenPOWER on IntegriCloud