- May 23, 2018
-
-
Philip Pfaffe authored
statement naming - A recent ppcg/isl update caused the grid/block size upper bounds to deviate by one from the oracle. This is not an effect that's visible at runtime. - Statement naming changed in polly. Update the testcases. llvm-svn: 333090
-
Philip Pfaffe authored
Other than before, don't clear out LI entirely but only those relevant loops. llvm-svn: 333089
-
- May 21, 2018
-
-
Peter Collingbourne authored
Part of PR37466. Differential Revision: https://reviews.llvm.org/D47089 llvm-svn: 332881
-
- May 19, 2018
-
-
Roman Lebedev authored
Fixes build: /build/polly/lib/Support/RegisterPasses.cpp:709:80: error: expected ';' after top level declarator extern "C" ::llvm::PassPluginLibraryInfo LLVM_ATTRIBUTE_WEAK LLVM_PLUGIN_EXPORT ^ ; Was missed in rL332796 / D47082 llvm-svn: 332814
-
- May 18, 2018
-
-
Eli Friedman authored
Fixes post-commit review comment on r332309. llvm-svn: 332775
-
- May 16, 2018
-
-
Michael Kruse authored
An assertion was not prepared to be passed a nullptr because the out-of-quota limit was exceeded. Bail-out before the assertion since the assertion does not apply on out-of-quote. This fixes llvm.org/PR37477. llvm-svn: 332488
-
Philip Pfaffe authored
Summary: This patch aims to remove the usage of old C-styled isl functions (in this case `isl_set_n_basic_set()`) in favor of new C++ isl interface based methods in `ScopInfo.cpp`. Patch by Sahil Yerawar Differential Revision: https://reviews.llvm.org/D46935 llvm-svn: 332471
-
- May 15, 2018
-
-
Philip Pfaffe authored
Summary: Creating the Scop name is expensive, because creating the Region name it's derived from is expensive. So create the name lazily, because getName() is actually called rarely. This is a reiteration of r328666, which introduced a use-after-free and got reverted in r331363. Differential Revision: https://reviews.llvm.org/D46868 llvm-svn: 332359
-
Philip Pfaffe authored
Summary: Unittests aren't working, and I don't think they ever were. Just remove them, so that we don't have to write `arc --nounit` all the time. Reviewers: grosser, Meinersbur, bollu Subscribers: bollu, pollydev, llvm-commits Differential Revision: https://reviews.llvm.org/D46869 llvm-svn: 332355
-
Nicola Zaghen authored
The DEBUG() macro is very generic so it might clash with other projects. The renaming was done as follows: - git grep -l 'DEBUG' | xargs sed -i 's/\bDEBUG\s\?(/LLVM_DEBUG(/g' - git diff -U0 master | ../clang/tools/clang-format/clang-format-diff.py -i -p1 -style LLVM Differential Revision: https://reviews.llvm.org/D44978 llvm-svn: 332352
-
Eli Friedman authored
nullptr is not a valid affine expression, and none of the callers check for null, so we eventually hit an isl error and crash. Instead, invalidate the scop and return a constant zero. Differential Revision: https://reviews.llvm.org/D46445 llvm-svn: 332309
-
- May 10, 2018
-
-
Tobias Grosser authored
Rename variable to retainedNodes. This unbreaks the Polly builds. llvm-svn: 331960
-
- May 09, 2018
-
-
Michael Kruse authored
The condition was introduced in r267142 to mitigate a long compile-time case. In r306087, a max-computation limit was introduced that should handle the same case while leaving the max disjuncts heuristic it should have replaced intact. Today, the max disjuncts bail-out causes problems in that it prematurely stops SCoPs from being detected, e.g. in SPEC's lbm. This would hit less like if isl_set_coalesce would be called after isl_set_remove_divs (which makes more basic_set likely to be coalescable) instead of before. This patch tries to remove the premature max-disjuncts bail-out condition by using simple_hull() to reduce the computational overhead, instead of directly invalidating that SCoP. Differential Revision: https://reviews.llvm.org/D45066 Contributed-by:
Sahil Girish Yerawar <cs15btech11044@iith.ac.in> llvm-svn: 331891
-
- May 08, 2018
-
-
Tobias Grosser authored
This test case does not require undef to be present in branch conditions. Replace these undef values with true/false values to clarify the control-flow required to reach the loop under testing. llvm-svn: 331744
-
- May 02, 2018
-
-
Philip Pfaffe authored
Summary: Occasionally you need an include or similar things to be configured when making a new testcase. Allow passing these to the script and down to the compiler calls. Reviewers: grosser, Meinersbur, bollu Reviewed By: Meinersbur Subscribers: bollu, llvm-commits, pollydev Differential Revision: https://reviews.llvm.org/D46359 llvm-svn: 331364
-
Philip Pfaffe authored
This reverts commit 0f9dc03765dc301fff7a52e2a0e1dd3e5f3130c5, r328666. The change introduced a use-after-free, caused by the temporary name string being destroyed after converting it to a StringRef. llvm-svn: 331363
-
- Apr 29, 2018
-
-
Tobias Grosser authored
These functions have been legacy leftovers which we used before the official C++ bindings existed. As all uses of these legacy functions have been removed, this polly-specific extension can also be dropped. llvm-svn: 331130
-
Tobias Grosser authored
llvm-svn: 331129
-
Tobias Grosser authored
llvm-svn: 331126
-
Tobias Grosser authored
llvm-svn: 331125
-
Tobias Grosser authored
llvm-svn: 331122
-
Tobias Grosser authored
llvm-svn: 331121
-
- Apr 28, 2018
-
-
Tobias Grosser authored
This moves more of Polly to islpp. llvm-svn: 331120
-
Tobias Grosser authored
We do this mostly by just moving directly to pure C++ code. llvm-svn: 331119
-
Tobias Grosser authored
llvm-svn: 331118
-
Tobias Grosser authored
The delta to the previous version is rather small, but a change in brace placement makes this a rather noisy commit. llvm-svn: 331113
-
- Apr 25, 2018
-
-
Michael Kruse authored
llvm-svn: 330865
-
Michael Kruse authored
Add the options -polly-codegen-trace-stmts and -polly-codegen-trace-scalars. When enabled, adds a call to the beginning of every generated statement that prints the executed statement instance. With -polly-codegen-trace-scalars, it also prints the value of all scalars that are used in the statement, and PHIs defined in the beginning of the statement. Differential Revision: https://reviews.llvm.org/D45743 llvm-svn: 330864
-
Michael Kruse authored
The current statement domain derivation algorithm does not (always) consider that different exit blocks of a loop can have different conditions to be reached. From the code for (int i = n; ; i-=2) { if (i <= 0) goto even; if (i <= 1) goto odd; A[i] = i; } even: A[0] = 42; return; odd: A[1] = 21; return; Polly currently derives the following domains: Stmt_even_critedge Domain := [n] -> { Stmt_even_critedge[] }; Stmt_odd Domain := [n] -> { Stmt_odd[] : (1 + n) mod 2 = 0 and n > 0 }; while the domain for the odd case is correct, Stmt_even is assumed to be executed unconditionally, which is obviously wrong. While projecting out the loop dimension in `adjustDomainDimensions`, it does not consider that there are other exit condition that have matched before. I don't know a how to fix this without changing a lot of code. Therefore This patch rejects loops with multiple exist blocks to fix the miscompile of test-suite's uuencode. The odd condition is transformed by LLVM to %cmp1 = icmp eq i64 %indvars.iv, 1 such that the project_out in adjustDomainDimensions() indeed only matches for odd n (using this condition only, we'd have an infinite loop otherwise). The even condition manifests as %cmp = icmp slt i64 %indvars.iv, 3 Because buildDomainsWithBranchConstraints() does not consider other exit conditions, it has to assume that the induction variable will eventually be lower than 3 and taking this exit. IMHO we need to reuse the algorithm that determines the number of iterations (addLoopBoundsToHeaderDomain) to determine which exit condition applies first. It has to happen in buildDomainsWithBranchConstraints() because the result will need to propagate to successor BBs. Currently addLoopBoundsToHeaderDomain() just look for union of all backedge conditions (which means leaving not the loop here). The patch in llvm.org/PR35465 changes it to look for exit conditions instead. This is required because there might be other exit conditions that do not alternatively go back to the loop header. Differential Revision: https://reviews.llvm.org/D45649 llvm-svn: 330858
-
Tobias Grosser authored
llvm-svn: 330800
-
- Apr 24, 2018
-
-
David Blaikie authored
llvm-svn: 330679
-
- Apr 21, 2018
-
-
Tobias Grosser authored
This is a regular maintenance update. llvm-svn: 330496
-
- Apr 20, 2018
-
-
Michael Kruse authored
Before this patch, ISL_ASSERT only printed an error message to stderr. This can be easily missed if the program continues or just fails later. To fail-early and help error diagnostics (e.g. using bugpoint), call abort() when an assertion does not hold. I seem to just have forgotten to add this abort() when I originally proposed the ISL_ASSERT macro. Suggested-By:
Eli Friedman <efriedma@codeaurora.org> Differential Revision: https://reviews.llvm.org/D45171 llvm-svn: 330467
-
Michael Kruse authored
Add the switch -polly-debug-func to define the name of a debug function. This function is ignored for any validity check. Its purpose is to allow to observe a value after transformation by a SCoP, and to follow which statements are executed in which order. For instance, consider the following code: static void dbg_printf(int sum, int i) { fprintf(stderr, "The value of sum is %d, i=%d\n", sum, i); fflush(stderr); } void func(int n) { int sum = 0; for (int i = 0; i < 16; i+=1) { sum += i; dbg_printf(sum, i); } } Executing this after Polly's codegen with -polly-debug-func=dbg_printf reveals the new execution order and the assumed values at that point of execution. Differential Revision: https://reviews.llvm.org/D45728 llvm-svn: 330466
-
- Apr 19, 2018
-
-
Tobias Grosser authored
In r330292 this assert was turned incorrectly into an unreachable, but the correct behavior (thanks Michael) is to assert for anything that is not 64 bit, but falltrough for 64 bit. I document this in the source code. llvm-svn: 330309
-
- Apr 18, 2018
-
-
Tobias Grosser authored
Originally the RuntimeDebugBuilder printed vectors with withspaces between the elements. This historic use is meanwhile gone, but the functionality is still available. We now change the behavior to print elements just one after the other without adding white spaces in between. This is useful for D45743, an upcoming commmit, which also adds test coverage for this feature. In general, printing elements of a vector directly is more generic as it allows uses where no white-spaces are desired. Specifically, it allows the user to build vectors of items to be printed where their length is only known at run-time. llvm-svn: 330292
-
Tobias Grosser authored
llvm-svn: 330289
-
Tobias Grosser authored
Make sure we also counts scops not containing any loops. llvm-svn: 330285
-
- Apr 17, 2018
-
-
Philip Pfaffe authored
Summary: As of rL329273, LLVM has a mechanism to load new-pm plugins in opt. Use this API in Polly. Reviewers: grosser, Meinersbur, bollu Reviewed By: grosser, Meinersbur Subscribers: lksbhm, bollu, pollydev, llvm-commits Differential Revision: https://reviews.llvm.org/D45484 llvm-svn: 330181
-
- Apr 12, 2018
-
-
Tobias Grosser authored
Piecewise affine expressions have directly corresponding mathematical operators. Introduce these operators as overloads as this makes writing code with isl::pw_aff expressions more directly readable. We can now write: A = B + C instead of A = B.add(C) Reviewers: Meinersbur, bollu, sebpop Reviewed By: Meinersbur Subscribers: philip.pfaffe, pollydev, llvm-commits Differential Revision: https://reviews.llvm.org/D45534 llvm-svn: 329880
-