summaryrefslogtreecommitdiffstats
path: root/polly
Commit message (Collapse)AuthorAgeFilesLines
...
* [NFC][ScopBuilder]Move finalizeAccesses and its callees to ScopBuilderDominik Adamski2019-07-174-253/+259
| | | | | | | | | | | | | | | Scope of changes: 1) Moved finalizeAccesses to ScopBuilder 2) Moved updateAccessDimensionality to ScopBuilder 3) Moved foldSizeConstantsToRight to ScopBuilder 4) Moved foldSizeConstantsToRight to ScopBuilder 5) Moved assumeNoOutOfBounds to ScopBuilder 6) Moved markFortranArrays to ScopBuilder 7) Added iterator range for AccessFunctions vector. Differential Revision: https://reviews.llvm.org/D63794 llvm-svn: 366374
* [NFC][ScopBuilder] Move addUserContext to ScopBuilderDominik Adamski2019-07-164-47/+48
| | | | | | | | | | Scope of changes: 1) Moved addUserContext to ScopBuilder. 2) Moved command line option UserContextStr to ScopBuilder. Differential Revision: https://reviews.llvm.org/D63740 llvm-svn: 366266
* [NFC][ScopBuilder] Move buildAliasChecks and its implementing methods to ↵Dominik Adamski2019-07-164-402/+420
| | | | | | | | | | | | | | | | | | | | | | | | ScopBuilder Scope of changes: 1) Moved buildAliasChecks to ScopBuilder. 2) Moved buildAliasGroup to ScopBuilder. 3) Moved buildAliasGroups to ScopBuilder. 4) Moved buildAliasGroupsForAccesses to ScopBuilder. 5) Moved splitAliasGroupsByDomain to ScopBuilder. 6) Moved addNonEmptyDomainConstraints to ScopBuilder. 7) Moved buildMinMaxAccess to ScopBuilder. 8) Moved calculateMinMaxAccess to ScopBuilder. 9) Moved getAccessDomain to ScopBuilder. 10) Moved command line options used only by buildAliasChecks functions to ScopBuilder. 11) Refactored buildAliasGroup function. Added addAliasGroup function to Scop class for pushing back calculated min/max accesses. 12) Added function incrementNumberOfAliasingAssumptions which increments number of statistic variable AssumptionsAliasing. AssumptionsAliasing variable is defined by STATISTIC macro inside ScopInfo.cpp and it is also used by function trackAssumption from Scop class. 13) Added reference to OptimizationRemarkEmitter to ScopBuilder class. 14) Moved calculateMinMaxAccess function to ScopBuilder class. Differential Revision: https://reviews.llvm.org/D63693 llvm-svn: 366262
* [NFC][ScopBuilder] Move addRecordedAssumption to ScopBuilderDominik Adamski2019-07-164-56/+67
| | | | | | | | | | | | | Scope of changes: 1) Moved addRecordedAssumptions to ScopBuilder. 2) Moved Assumption struct outside Scop class. 3) Refactored addRecordedAssumptions function. Replaced while loop by for range loop. 4) Added function to clear processed Assumptions. Differential Revision: https://reviews.llvm.org/D63572 llvm-svn: 366260
* [ScopInfo][NFC] Add dot at the end of comment statement.Dominik Adamski2019-07-151-1/+1
| | | | llvm-svn: 366134
* OpaquePtr: Update polly's calls to Loads.h APITim Northover2019-07-092-3/+5
| | | | | | | | | The Loads.h API changed so that a Type parameter is now mandatory in preparation for pointer types being opaque. Unfortunately I don't build polly routinely and it still had some uses. This just provides the (obvious) load type in each case. llvm-svn: 365470
* [test] Add wrap flags after D61934.Michael Kruse2019-06-172-3/+3
| | | | | | | | | | | | https://reviews.llvm.org/D61934, committed as r362687, r363540, r363364 and r363147, made some emitted instruction nus/nsw. Add these falgs to Polly's regression tests. This should fix Polly :: Isl/CodeGen/partial_write_in_region_with_loop.ll Polly :: Isl/CodeGen/scev_expansion_in_nonaffine.ll llvm-svn: 363599
* [ScopInliner] Register FunctionAnalysisManagerModuleProxy.Michael Kruse2019-06-171-0/+1
| | | | | | | | | | | | FunctionAnalysisManagerModuleProxy started to be used by the AlwaysInlinerPass in r363287 and therefore had to be registered in the New PassManager. Should fix the regression tests Polly :: ScopInliner/invariant-load-func.ll Polly :: ScopInliner/simple-inline-loop.ll llvm-svn: 363572
* [ScopBuilder] Move addInvariantLoads to ScopBuilder. NFC.Michael Kruse2019-06-124-180/+188
| | | | | | | | | | | | | | | | | | | Moved addInvariantLoads and functions listed below to ScopBuilder: isAParameter canAlwaysBeHoisted These functions were referenced only by getNonHoistableCtx. Moved CLI parameter PollyAllowDereferenceOfAllFunctionParams to ScopBuilder. Added iterator range through InvariantEquivClasses. Patch by Dominik Adamski <adamski.dominik@gmail.com> Differential Revision: https://reviews.llvm.org/D63172 llvm-svn: 363216
* [ScopBuilder] Move getNonHoistableCtx to ScopBuilder. NFC.Michael Kruse2019-06-124-136/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | This review is based on review: https://reviews.llvm.org/D62925 . It is part of moving hoistInvariantLoads function and all functions referenced only by hoistInvariantLoads to ScopBuilder. Moved getNonHoistableCtx and functions listed below to ScopBuilder: isRequiredInvariantLoad hasNonHoistableBasePtrInScop isAccessRangeTooComplex These functions were referenced only by getNonHoistableCtx. MaxDimensionsInAccessRange and MaxDisjunctsInDomain constant is marked as extern and it is added to polly namespace. It is used by Scop and ScopBuilder classes. MaxDimensionsInAccessRange constant moved to ScopBuilder. It is not used outside ScopBuilder. Patch by Dominik Adamski <adamski.dominik@gmail.com> Differential Revision: https://reviews.llvm.org/D63066 llvm-svn: 363214
* [ScopBuilder] Move hoistInvariantLoads to ScopBuilder. NFC.Michael Kruse2019-06-124-51/+51
| | | | | | | | | | | | | | | | | Refactor Scop and ScopBuilder class: 1. Move hoistInvariantLoads function from Scop to ScopBuilder class. 2. Private functions (addInvariantLoads, getNonHoistableCtx) are moved to public section of Scop class. hoistInvariantLoads function references these functions. These functions will be moved to ScopBuilder as well in the next steps. Patch by Dominik Adamski <adamski.dominik@gmail.com> Differential Revision: https://reviews.llvm.org/D62925 llvm-svn: 363121
* [ScheduleTreeTransform] Silence compiler warning. NFC.Michael Kruse2019-06-061-1/+1
| | | | | | | Use size_t for position which is the return type type ArrayRef::size() it is compared to. llvm-svn: 362724
* [ScopBuilder] Move canonicalizeDynamicsBasePtrs from ScopInfo. NFC.Michael Kruse2019-06-044-99/+99
| | | | | | | | | | | Refactor Scop and ScopBuilder class. Move canonicalizeDynamicsBasePtrs and corresponding static functions from ScopInfo.cpp to ScopBuilder.cpp Patch by Dominik Adamski <adamski.dominik@gmail.com> Differential Revision: https://reviews.llvm.org/D62781 llvm-svn: 362554
* [ScopBuilder] Move verifyInvariantLoads function from ScopInfo. NFC.Michael Kruse2019-05-314-30/+30
| | | | | | | | | | | Refactor Scop and ScopBuilder class. Move verifyInvariantLoads from Scop class to ScopBuilder class. Patch by: Dominik Adamski <adamski.dominik@gmail.com> Differential Revision: https://reviews.llvm.org/D62628 llvm-svn: 362258
* [ScheduleOptimizer] Hoist extension nodes after schedule optimization.Michael Kruse2019-05-319-85/+724
| | | | | | | | | | | | | | | | | | | | | | Extension nodes make schedule trees are less flexible: Many operations, such as rescheduling, do not work on such schedule trees with extension. As such, some functionality such as determining parallel loops in isl's AST are disabled. Currently, only the pattern-matching generalized matrix-matrix multiplication optimization adds extension nodes (to add copy-in statements). This patch removes all extension nodes as the last step of the schedule optimization by hoisting the extension node's added domain up to the root domain node. All following passes can assume that schedule trees work without restrictions, including the parallelism test. Mark the outermost loop of the optimized matrix-matrix multiplication as parallel such that -polly-parallel is able to parallelize that loop. Differential Revision: https://reviews.llvm.org/D58202 llvm-svn: 362257
* [ScopBuilder] Move buildInvariantEquivalenceClasses function from ScopInfo. NFC.Michael Kruse2019-05-284-36/+48
| | | | | | | | | | | | Refactor Scop and ScopBuilder class. Move buildInvariantEquivalenceClasses function from Scop class to ScopBuilder class. Patch by: Dominik Adamski <adamski.dominik@gmail.com> Differential Revision: https://reviews.llvm.org/D62351 llvm-svn: 361902
* [DeLICM] Use polly::singleton to allow empty result.Michael Kruse2019-05-212-2/+80
| | | | | | | | | | | isl_map_from_union_map cannot determine the map's space if the union_map is empty. polly::singleton was designed for this case. We pass the expected map space to avoid crashing in isl_map_from_union_map. This fixes an issue found by the aosp buildbot. Thanks to Eli Friedman for the reproducer. llvm-svn: 361290
* [CodeGen] Fix order of PHINode and MA Write generation.Michael Kruse2019-05-204-1/+166
| | | | | | | | | | | | | | | | At the end of a region statement, the PHINode must be generated while the current IRBuilder's block is the region's exit node. For obvious reasons: The PHINode references the region's exiting block. A partial write would insert new control flow, i.e. insert new basic blocks between the exiting blocks and the current block. We fix this by generating the PHI nodes (region exit values) before generating any MemoryAccess's stores. This should fix the AOSP buildbot. Reported-by: Eli Friedman <efriedma@quicinc.com> llvm-svn: 361204
* [DependenceInfo] Remove dead initialization. NFC.Michael Kruse2019-05-201-2/+2
| | | | | | | | | | Fix scan-analyzer issue: Value stored to 'WARMemAccesses' during its initialization is never read Patch by Dominik Adamski <adamski.dominik@gmail.com> Signed-off-by: Dominik Adamski <adamski.dominik@gmail.com> llvm-svn: 361196
* [polly] Fix non-determinism in IslNodeBuilder.Eli Friedman2019-05-141-1/+1
| | | | | | | | | The iteration order of OutsideLoopIterations matters for IslNodeBuilder::getReferencesInSubtree, which inserts the values from the map into a SetVector, which is eventually used to construct the type of the context for parallel loops. llvm-svn: 360723
* [Polly] Don't crash on invalid delinearization result.Eli Friedman2019-05-142-1/+30
| | | | | | | | | | | | | | | | | | | In certain cases, it's possible for delinearization to decide one of the array dimensions should be some function of an induction variable inside the scop. Make sure if this happens, we refuse to use those dimensions for delinearization. Usually, we end up rejecting the scop before it actually crashes, but it looks like it's possible to slip past other checks in certain cases involving smax expressions. Fixes a crash that started showing up this week on the polly AOSP builder. As far as I can tell, this is a longstanding issue, though; it was just exposed by better SCEV analysis of smin expressions. Differential Revision: https://reviews.llvm.org/D61807 llvm-svn: 360708
* [ZoneAlgo] Fix PHI inconsistency in invalid contexts.Michael Kruse2019-05-106-2/+117
| | | | | | | | | | PHI nodes (reads) could point to multiple instances of predecessor blocks (PHI writes) when in an invalid context. Fix by removing PHI instances that are in an invalid or ouside assumed context. This fixes llvm.org/PR41656. llvm-svn: 360454
* [polly][SCEV] Expand SCEV matcher cases for new smin/umin opsKeno Fischer2019-05-085-1/+61
| | | | | | | These were added in rL360159, but I neglected to update polly at the same time. llvm-svn: 360238
* Apply include-what-you-use #include removal suggestions. NFC.Michael Kruse2019-03-2866-491/+45
| | | | | | | | | | | | This removes unused includes (and forward declarations) as suggested by include-what-you-use. If a transitive include of a removed include is required to compile a file, I added the required header (or forward declaration if suggested by include-what-you-use). This should reduce compilation time and reduce the number of iterative recompilations when a header was changed. llvm-svn: 357209
* [ConstantRange] Rename isWrappedSet() to isUpperWrapped()Nikita Popov2019-03-271-1/+1
| | | | | | | | | | | | | | Split out from D59749. The current implementation of isWrappedSet() doesn't do what it says on the tin, and treats ranges like [X, Max] as wrapping, because they are represented as [X, 0) when using half-inclusive ranges. This also makes it inconsistent with the semantics of isSignWrappedSet(). This patch renames isWrappedSet() to isUpperWrapped(), in preparation for the introduction of a new isWrappedSet() method with corrected behavior. llvm-svn: 357107
* Moving ManagedMemoryRewritePass when hybrid option is selectedMichael Kruse2019-03-251-4/+7
| | | | | | | | | | | | | | | Compiling with -polly-target=hybrid was causing Polly to occur two times in the pipeline. The reason was how the ManagedMemoryRewritePass was registered in the pass manager. ManagedMemoryRewritePass being a ModulePass was forcing all previous passes to get recomputed. This commit avoids Polly to appear two times in the pipeline registering the ManagedMemoryRewritePass later in the pass manager. Patch by Lorenzo Chelini <l.chelini@icloud.com> Differential Revision: https://reviews.llvm.org/D59263 llvm-svn: 356965
* [CodeGen] LLVM OpenMP Backend.Michael Kruse2019-03-1913-224/+1267
| | | | | | | | | | | | | | | | | | | | | The ParallelLoopGenerator class is changed such that GNU OpenMP specific code was removed, allowing to use it as super class in a template-pattern. Therefore, the code has been reorganized and one may not use the ParallelLoopGenerator directly anymore, instead specific implementations have to be provided. These implementations contain the library-specific code. As such, the "GOMP" (code completely taken from the existing backend) and "KMP" variant were created. For "check-polly" all tests that involved "GOMP": equivalents were added that test the new functionalities, like static scheduling and different chunk sizes. "docs/UsingPollyWithClang.rst" shows how the alternative backend may be used. Patch by Michael Halkenhäuser <michaelhalk@web.de> Differential Revision: https://reviews.llvm.org/D59100 llvm-svn: 356434
* [opaque pointer types] Update calls to CreateCall to pass the functionJames Y Knight2019-02-081-2/+3
| | | | | | type in lldb and polly. llvm-svn: 353549
* Adjust documentation for git migration.James Y Knight2019-01-294-17/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes most references to the paths: llvm.org/svn/ llvm.org/git/ llvm.org/viewvc/ github.com/llvm-mirror/ github.com/llvm-project/ reviews.llvm.org/diffusion/ to instead point to https://github.com/llvm/llvm-project. This is *not* a trivial substitution, because additionally, all the checkout instructions had to be migrated to instruct users on how to use the monorepo layout, setting LLVM_ENABLE_PROJECTS instead of checking out various projects into various subdirectories. I've attempted to not change any scripts here, only documentation. The scripts will have to be addressed separately. Additionally, I've deleted one document which appeared to be outdated and unneeded: lldb/docs/building-with-debug-llvm.txt Differential Revision: https://reviews.llvm.org/D57330 llvm-svn: 352514
* Fix/unify top comment in lib/Analysis/PolyhedralInfo.cppMichal Gorny2019-01-221-15/+16
| | | | | | | | | | | Change the top comment in PolyhedralInfo.cpp to use // instead of ///, similarly to headers in other files. This fixes the issue of copyright line exceeding textwidth and triggering polly-check-format45 failure, e.g. seen here: http://lab.llvm.org:8011/builders/lldb-amd64-ninja-netbsd8/builds/18293/steps/run%20unit%20tests/logs/stdio llvm-svn: 351808
* Fix typos throughout the license files that somehow I and my reviewersChandler Carruth2019-01-212-2/+2
| | | | | | | | | | | all missed! Thanks to Alex Bradbury for pointing this out, and the fact that I never added the intended `legacy` anchor to the developer policy. Add that anchor too. With hope, this will cause the links to all resolve successfully. llvm-svn: 351731
* Update more file headers across all of the LLVM projects in the monorepoChandler Carruth2019-01-192-8/+8
| | | | | | | | | | | | | | | | | | to reflect the new license. These used slightly different spellings that defeated my regular expressions. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351648
* Update the file headers across all of the LLVM projects in the monorepoChandler Carruth2019-01-1993-372/+279
| | | | | | | | | | | | | | | | | to reflect the new license. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351636
* Install new LLVM license structure and new developer policy.Chandler Carruth2019-01-192-25/+472
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This installs the new developer policy and moves all of the license files across all LLVM projects in the monorepo to the new license structure. The remaining projects will be moved independently. Note that I've left odd formatting and other idiosyncracies of the legacy license structure text alone to make the diff easier to read. Critically, note that we do not in any case *remove* the old license notice or terms, as that remains necessary until we finish the relicensing process. I've updated a few license files that refer to the LLVM license to instead simply refer generically to whatever license the LLVM project is under, basically trying to minimize confusion. This is really the culmination of so many people. Chris led the community discussions, drafted the policy update and organized the multi-year string of meeting between lawyers across the community to figure out the strategy. Numerous lawyers at companies in the community spent their time figuring out initial answers, and then the Foundation's lawyer Heather Meeker has done *so* much to help refine and get us ready here. I could keep going on, but I just want to make sure everyone realizes what a huge community effort this has been from the begining. Differential Revision: https://reviews.llvm.org/D56897 llvm-svn: 351631
* [polly] Change to range-based invocation of llvm::sortMandeep Singh Grang2019-01-181-1/+1
| | | | llvm-svn: 351502
* Bump the trunk version to 9.0.0svnHans Wennborg2019-01-162-4/+4
| | | | llvm-svn: 351320
* Remove irrelevant references to legacy git repositories fromJames Y Knight2019-01-1517-20/+20
| | | | | | | | | 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.) llvm-svn: 351200
* Update year in license filesHans Wennborg2019-01-152-2/+2
| | | | | | | In last year's update (D48219) it was suggested that the release manager might want to do this, so here we go. llvm-svn: 351194
* [CMake] Fix generation of exported targets in build directoryPhilip Pfaffe2018-11-061-2/+2
| | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 346231
* Fix clang -Wimplicit-fallthrough warnings across llvm, NFCReid Kleckner2018-11-012-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 345882
* [TI removal] Generically discuss terminators rather than use the soon toChandler Carruth2018-10-181-1/+1
| | | | | | vanish subclass name. llvm-svn: 344728
* Fix broken formatting caused by test commitTheodoros Theodoridis2018-10-171-1/+1
| | | | llvm-svn: 344694
* Test commitTheodoros Theodoridis2018-10-171-1/+1
| | | | llvm-svn: 344682
* [TI removal] Make `getTerminator()` return a generic `Instruction`.Chandler Carruth2018-10-155-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 344504
* Fix another error related to YAML quoting.Zachary Turner2018-10-121-6/+6
| | | | | | | This one occured in polly, which I didn't build / test the first time so I didn't catch it. llvm-svn: 344378
* [IslAst] Fix InParallelFor nesting.Michael Kruse2018-09-274-21/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 343212
* [doc] Fix HowToManuallyUseTheIndividualPiecesOfPollyMichael Kruse2018-09-2639-1979/+2571
| | | | | | Also remove compiled binaries. llvm-svn: 343119
* Move www/experiments to docs/experimentsMichael Kruse2018-09-2631-0/+0
| | | | llvm-svn: 343118
* fix the scan-build urlsSylvestre Ledru2018-09-212-3/+3
| | | | llvm-svn: 342716
* [ScopDetection] Use addUnknown for calls in the AliasSetTracker.Eli Friedman2018-09-111-2/+6
| | | | | | | | | | | | | | | | | | | | | 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
OpenPOWER on IntegriCloud