azabaznov added inline comments.

================
Comment at: clang/lib/Basic/TargetInfo.cpp:405
+      const auto &OpenCLFeaturesMap = getSupportedOpenCLOpts();
+      Opts.OpenCLGenericAddressSpace = hasFeatureEnabled(
+          OpenCLFeaturesMap, "__opencl_c_generic_address_space");
----------------
Anastasia wrote:
> azabaznov wrote:
> > Anastasia wrote:
> > > svenvh wrote:
> > > > This means we now have two separate places that set 
> > > > `OpenCLGenericAddressSpace`, the other place being in 
> > > > `CompilerInvocation::setLangDefaults()`.  That feels like a maintenance 
> > > > hazard.  Do you think it makes sense to set this field in one single 
> > > > place instead?
> > > I think we should try to set it in `CompilerInvocation.cpp` directly, we 
> > > should be able to query `TargetOptions` there. Although that place is 
> > > expected to be for the language-specific defaults but we broke the 
> > > standard flow by having the language mode controlled by the target 
> > > settings anyway.
> > > 
> > > I can't remember though why we have decided to add dedicated `LangOpts` 
> > > entries for generic address space instead of just using `OpenCLOptions` 
> > > from `Sema`? I think it simplifies the handling of some builtin functions?
> > > This means we now have two separate places that set 
> > > OpenCLGenericAddressSpace, the other place being in 
> > > CompilerInvocation::setLangDefaults(). That feels like a maintenance 
> > > hazard. Do you think it makes sense to set this field in one single place 
> > > instead?
> > 
> > >I think we should try to set it in CompilerInvocation.cpp directly, we 
> > >should be able to query TargetOptions there. 
> > 
> > I don't think that we are able to access target options at that stage 
> > without modifying current interfaces.  
> > `CompilerInvocation::setLangDefaults()` is a static member function.
> > 
> > > I can't remember though why we have decided to add dedicated LangOpts 
> > > entries for generic address space instead of just using OpenCLOptions 
> > > from Sema? I think it simplifies the handling of some builtin functions?
> > 
> > That's correct. Also, the idea was to reuse generic keyword in other 
> > languages.
> > I don't think that we are able to access target options at that stage 
> > without modifying current interfaces. CompilerInvocation::setLangDefaults() 
> > is a static member function.
> 
> I wonder if the function is static due to an old interface or something 
> because it seems to be only called from `CompilerInvocation::ParseLangArgs` 
> which isn't a static member as far as I can see. I wonder if it should just 
> become a non-static member instead?
> 
Actually `CompilerInvocation::ParseLangArgs` is static as well. Anyway, I think 
this change would be really impactful. I believe `::adjust` is a prefect place 
to coordinate language options with target information (at least for now).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D103401

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

Reply via email to