cchen added inline comments.

================
Comment at: clang/lib/Sema/SemaOpenMP.cpp:737
+  }
+  void eraseConstructTrait() { ConstructTraits.clear(); }
+
----------------
cchen wrote:
> jdoerfert wrote:
> > Modification was made to make it clear what happens but now I think this is 
> > not needed.
> > 
> > See below first. Maybe the interface should be 
> > "handleConstructTrait(Property, bool Insert)" and if Insert is false you 
> > verify it's the last one and delete it. You'd need to traverse them in 
> > opposite order though to verify, unsure if verification is therefore 
> > strictly necessary.
> For the delete part, I'm not sure how passing `Property` would work since I'm 
> not deleting all the construct trait properties inside `ActOnOpenMPRegionEnd` 
> function.
I think I've figured out a way to achieve what you suggest.


================
Comment at: clang/lib/Sema/SemaOpenMP.cpp:4491
                                       ArrayRef<OMPClause *> Clauses) {
+  DSAStack->eraseConstructTrait();
   if (DSAStack->getCurrentDirective() == OMPD_atomic ||
----------------
jdoerfert wrote:
> I know think you need to call something like 
> `addDeclareVariantConstructTrait` again and do pop_back() instead of 
> push_back() for each trait matching the DKind. Clearing, or erasing a fixed 
> amount of traits, does not work. 
So you are saying that instead of removing all the construct property inside 
`ActOnOpenMPRegionEnd`, we should delete those construct properties more 
fine-grained? I'd like to do so and has tried putting the insert/delete logic 
inside more specific function such as `ActOnOpenMPParllell`, 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109635/new/

https://reviews.llvm.org/D109635

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to