Commit Graph

3859 Commits

Author SHA1 Message Date
Eli Friedman
efe18d3977 [ScopDetection] Use addUnknown for calls in the AliasSetTracker.
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

llvm-svn: 342010
2018-09-11 23:48:14 +00:00
Tobias Grosser
4beb2f964b [PerfMonitor] Fix rdtscp callsites
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

llvm-svn: 341946
2018-09-11 14:17:44 +00:00
Chandler Carruth
9ae926b973 [IR] Replace isa<TerminatorInst> with isTerminator().
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.

llvm-svn: 340701
2018-08-26 09:51:22 +00:00
Michael Kruse
b67e5d3f27 [AST] Adapt Polly to AnalysisSetTracker changes. NFC.
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.

llvm-svn: 340072
2018-08-17 19:31:41 +00:00
Michael Kruse
0e4e6e5e87 [DepInfo] Use isl++ in Dependences::isValidSchedule. NFC.
Also change StatementToIslMapTy to hold isl::map, because it is used as a
parameter.

llvm-svn: 339484
2018-08-10 22:33:27 +00:00
Tobias Grosser
7164b7d347 Update isl-cpp bindings
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.

llvm-svn: 339312
2018-08-09 05:07:14 +00:00
Tobias Grosser
26269d34d4 Update to isl-0.20-65-gb822a210
This update fixes https://https:/llvm.org/PR38348. Thanks Michael for
reporting the issue to isl and Sven for fixing the issue.

llvm-svn: 339311
2018-08-09 05:07:05 +00:00
Tobias Grosser
6145b11cd8 Update isl to isl-0.20-48-g13eba5b5
This is a regular maintenance updated.

llvm-svn: 339095
2018-08-07 05:51:21 +00:00
Tobias Grosser
b8a55e1eee Make update-isl work with latest isl versions
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.

llvm-svn: 339094
2018-08-07 05:50:58 +00:00
Michael Kruse
ebca0f1609 [JSONExporter] Print instead of ignoring parser error.
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.

llvm-svn: 338659
2018-08-02 00:11:14 +00:00
Michael Kruse
842bdd0071 [ScopBuilder] Set domain to empty instead of NULL.
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.

llvm-svn: 338646
2018-08-01 22:28:32 +00:00
Hans Wennborg
7d02a3177d Update docs version and clear release notes after 8.0.0 version bump
llvm-svn: 338560
2018-08-01 14:11:32 +00:00
Tobias Grosser
5f865032db PPCG codegen
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.

llvm-svn: 338512
2018-08-01 10:48:38 +00:00
Tobias Grosser
4b53d74e89 [isl++] drop the isl namespace qualifiers [NFC]
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.

llvm-svn: 338505
2018-08-01 09:57:36 +00:00
Tobias Grosser
a2fd441989 Rebase C++ bindings on top of latest isl bindings
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.

llvm-svn: 338504
2018-08-01 09:57:10 +00:00
Tobias Grosser
d169d70bbf Update to isl-0.20-35-ge0a98b62
llvm-svn: 338501
2018-08-01 09:20:03 +00:00
Michael Kruse
37b3c1775b [JSONExporter] Try to appease buildbot. NFC.
The compiler does not seem to able move a local variable in the
function's return statement.

llvm-svn: 338466
2018-08-01 00:48:01 +00:00
Michael Kruse
42ad818265 [Polly-ACC] Fix compilation after r338450. NFC.
llvm-svn: 338462
2018-08-01 00:27:29 +00:00
Michael Kruse
23655020a2 [JSONExporter] Replace bundled Jsoncpp with llvm/Support/JSON.h. NFC.
Differential Revision: https://reviews.llvm.org/D49950

llvm-svn: 338461
2018-08-01 00:15:16 +00:00
Michael Kruse
e873673b0c [CodeGen] Convert IslNodeBuilder::getNumberOfIterations to isl++. NFC.
llvm-svn: 338451
2018-07-31 23:01:50 +00:00
Michael Kruse
f16378b080 [CodeGen] Convert IslNodeBuilder::createForSequential to isl++. NFC.
llvm-svn: 338450
2018-07-31 22:43:04 +00:00
Michael Kruse
ade2242e7e [CodeGen] Convert IslNodeBuilder::getUpperBound to isl++. NFC.
llvm-svn: 338449
2018-07-31 22:42:59 +00:00
Michael Kruse
60e2a321e5 [test] Remove non-JSPON comments in JSCOP file. NFC.
llvm-svn: 338185
2018-07-28 01:11:45 +00:00
Philip Pfaffe
4f4dfbacad [isl] Simplify iterator implementation by building on top of list accessors
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

llvm-svn: 337702
2018-07-23 15:28:50 +00:00
Tobias Grosser
6d69f92864 [DependenceInfo] Use isl++ to replace foreach_set with for loop
llvm-svn: 337248
2018-07-17 07:08:06 +00:00
Tobias Grosser
670482db8b [IslNodeBuilder] Use isl++ to replace foreach_set with for loop
llvm-svn: 337247
2018-07-17 07:08:01 +00:00
Tobias Grosser
a98c7e7309 [ScopInfo] Replace isl foreach calls with for loops
llvm-svn: 337246
2018-07-17 06:41:20 +00:00
Tobias Grosser
bbb510b18d [ZoneAlgo] Replace isl foreach calls with for loops
llvm-svn: 337245
2018-07-17 06:33:41 +00:00
Tobias Grosser
c253931fcf [FlattenSchedule] Replace isl foreach calls with for loops
llvm-svn: 337244
2018-07-17 06:33:37 +00:00
Tobias Grosser
3867bae74b [MaximalStaticExpansion] Replace isl foreach calls with for loops
llvm-svn: 337243
2018-07-17 06:33:34 +00:00
Tobias Grosser
91f851b11a [ForwardOpTree] Replace isl foreach calls with for loops
llvm-svn: 337242
2018-07-17 06:33:31 +00:00
Tobias Grosser
a33871686f [Simplify] Replace isl foreach calls with for loops
llvm-svn: 337241
2018-07-17 06:33:26 +00:00
Tobias Grosser
9d8913020d [FlattenAlgo] Replace more isl foreach calls with for loops
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.

llvm-svn: 337239
2018-07-17 06:16:58 +00:00
Tobias Grosser
6106595ac1 [FlattenAlgo] Replace some isl foreach calls with for loops
Replace foreach calls which only return 'ok' with for loops.

llvm-svn: 337238
2018-07-17 06:11:53 +00:00
Tobias Grosser
046c97876a [unittest/DeLICM] Replace isl foreach calls with for loops
llvm-svn: 337237
2018-07-17 06:08:04 +00:00
Tobias Grosser
31e29a4b59 [ScopInfo] Replace isl foreach calls with for loops
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.

llvm-svn: 337201
2018-07-16 19:04:16 +00:00
Philip Pfaffe
ee51d5c64e [Polly][isl] Add neutrally-named accessors to isl list elements and sizes
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

llvm-svn: 337054
2018-07-13 22:05:01 +00:00
Michael Kruse
cd4d873d15 [Docs] Fix generation of manpages.
Fix the following error when Sphinx generates the Polly manpage:

    Warning, treated as error:
    docs/Performance.rst:: WARNING: "table cell spanning" not supported

llvm-svn: 336600
2018-07-09 20:26:11 +00:00
Philip Pfaffe
492cdfc5fb Add a file that was missing in r336425
llvm-svn: 336430
2018-07-06 11:33:35 +00:00
Tobias Grosser
b370615451 Update isl to isl-0.19-224-gce84a511
This is a maintenance update. Besides many minor changes it ships two
functions "isl_*_list_size" and "isl_*_list_get_at" which will allow us
to simplify the iterator implementation in Polly.

llvm-svn: 336425
2018-07-06 09:00:26 +00:00
Tobias Grosser
4aab4ec836 [ScopInfo] Move foldSizeConstantsToRight() to isl++
Summary: This patch updates the isl interface used in `foldSizeConstantsToRight()` to the new C++ interface.

Reviewers: chelini, grosser, philip.pfaffe, Meinersbur

Reviewed By: grosser

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D48965

llvm-svn: 336362
2018-07-05 15:23:28 +00:00
Michael Kruse
9f305371d9 [CodeGen] Fix potential null pointer dereference. NFC.
ScalarEvolution::getSCEV dereferences its argument, s.t. passing nullptr
leads to undefined behaviour.

Check for nullptr before calling it instead of checking its argument
afterwards.

llvm-svn: 336350
2018-07-05 13:44:50 +00:00
Siddharth Bhat
936c74ad0d [PPCGCodeGen] Change printf to outs() to prevent garbled output. [NFC]
Summary:
It appears that llvm uses unbuffered C++ streams. So, we should not
mix C and C++ stream operations, because that will give us mixed
up output.

Reviewers: efriedma, jdoerfert, Meinersbur, gareevroman, sebpop, zinob, huihuiz, pollydev, grosser, singam-sanjay, philip.pfaffe

Reviewed By: philip.pfaffe

Subscribers: nemanjai, kbarton

Differential Revision: https://reviews.llvm.org/D40126

llvm-svn: 336288
2018-07-04 16:51:27 +00:00
Tobias Grosser
a66ab832a0 ScopInfo: simplify equivalence classes before storing them [NFCI]
This change has no impact on upstream Polly directly, but reduces output
noise for some internal isl versions we are testing. In general, storing
simpler and more canonical output is a good idea. Hence, it seems useful
to upstream this change.

llvm-svn: 336281
2018-07-04 14:53:36 +00:00
Siddharth Bhat
98a7a31d1e [Polly-ACC] Add isl_space.h to gpu_tree.c
Summary:
This patch adds <isl_space.h> to gpu_tree.c. This prevents a segfault
when allocating a new isl_space in the function create_sync_domain(), as
the compiler now knows that the return type is a pointer instead of
assuming the function returns an int.

This has been updated in upstream PPCG, so we should bump up our PPCG
version.

Initially discovered by Philip Pfaffe in Polly.

Reviewers: grosser, bollu, philip.pfaffe

Reviewed By: bollu

Subscribers: nemanjai, kbarton, llvm-commits

Differential Revision: https://reviews.llvm.org/D48883

Contributed-by: Alain Denzler <alaindenzler@gmail.com>
llvm-svn: 336251
2018-07-04 09:40:55 +00:00
Philip Pfaffe
cb8a82929c Fix for r336080: Missing colon in REQUIRES line
llvm-svn: 336083
2018-07-02 08:36:49 +00:00
Philip Pfaffe
d71493cb06 [polly-acc] change cl_get_* return types to 32/64bit
Summary:
This patch changes the return types for ocl_get_* functions during SPIR code generation. Because these functions return size_t types, the return type needs to be changed to the actual size of size_t on the device.

Based on work by Michal Babej and Pekka Jääskeläinen

Patch by: Alain Denzler

Reviewers: grosser, philip.pfaffe, bollu

Reviewed By: grosser, philip.pfaffe

Subscribers: nemanjai, kbarton, llvm-commits

Differential Revision: https://reviews.llvm.org/D48774

llvm-svn: 336080
2018-07-02 07:40:47 +00:00
Tobias Grosser
d43114f880 Use range for in normalizeValInst [NFCI]
llvm-svn: 335971
2018-06-29 13:06:44 +00:00
Tobias Grosser
1696e48e79 Translate a couple of foreach callbacks into range-based iterator loops
Thanks to Philip Pfaffe for providing iterator support in the previous
commit.

llvm-svn: 335970
2018-06-29 12:23:48 +00:00
Tobias Grosser
da82da8a20 Add missing namespace specifier
llvm-svn: 335966
2018-06-29 11:49:34 +00:00