[PATCH] D75893: [OpenMP] Add !range metadata to loads from omp.(ub/lb)
Johannes Doerfert via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 13 09:39:51 PDT 2020
jdoerfert added inline comments.
================
Comment at: llvm/lib/Transforms/IPO/OpenMPOpt.cpp:249
+ }
+ };
+
----------------
kaushikcfd wrote:
> jdoerfert wrote:
> > kaushikcfd wrote:
> > > jdoerfert wrote:
> > > > kaushikcfd wrote:
> > > > > jdoerfert wrote:
> > > > > > You need to verify there is only a single load/store and the value is an alloca without initializer and the type is as expected.
> > > > > > verify there is only a single load/store
> > > > > There might be multiple loads/store to `%omp.ub` arising from `EnsureUpperBound`. So, we only pick the store just before and the load just after the `static_for` invocation.
> > > > >
> > > > > > value is an alloca without initializer
> > > > > Is the "value" begin discussed here `V`?
> > > > If there are multiple, how do you ensure you pick up the right one? We probably need to find all and use the upper/lower bound of all stored values to be correct. We also need a test for multiple loads/stores.
> > > >
> > > > I mean we assume `OMPLBVal` and `OMPUBVal` are alloca's, right? We need to make sure we only pattern match a situation we can "control"
> > > Agreed, the current implementation is broken. I've added a FIXME for it. Looks like we should do some dataflow analysis to figure out the correct range.
> > >
> > > > I mean we assume OMPLBVal and OMPUBVal are alloca's, right?
> > > Yep, made the assumption explicit in the latest revision.
> > No "FIXME" for correctness issues please. "FIXME" is fine for required improvements though.
> > So, the case we can handle correctly now we should. We should also detect if it is not one of them and give up, e.g., if there are more than a single load and store. I recommend just tracking all uses, determining if it is a load of the pointer or a store *to the pointer* (not of it), putting them in respective sets, and bailing on other uses. Then, inspect the loads/stores, for now just bail if the number is not one for each.
> >
> > We should have a test with a FIXME as well to show what is missing.
> The "FIXME" was meant to be handled before getting this merged in. (this is in process of being solved, will ping once I've put in the solution)
Sounds good :) I will monitor the reviews more closely now anyway.
================
Comment at: llvm/lib/Transforms/IPO/OpenMPOpt.cpp:250
+ // Support a simple, but widely occurring case.
+ return false;
+
----------------
Style: I would move the comment before the `if` or add braces.
I'm curious, is this a widely occurring case? Do you know when it occurs in practice?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D75893/new/
https://reviews.llvm.org/D75893
More information about the llvm-commits
mailing list