domada marked an inline comment as done.
domada added inline comments.

================
Comment at: flang/lib/Frontend/FrontendActions.cpp:139-142
+  // Clang does not append all target features to the clang -cc1 invocation.
+  // Some AMDGPU features are passed implicitly by the Clang frontend.
+  // That's why we need to extract implicit AMDGPU target features and add
+  // them to the target features specified by the user
----------------
awarzynski wrote:
> [nit] IMHO this is documenting an implementation detail that would be more 
> relevant inside `getExplicitAndImplicitAMDGPUTargetFeatures`.
> 
> More importantly, you are suggesting that the driver is doing whatever it is 
> doing "because that's what Clang does". Consistency with Clang is important 
> (you could call it out in the commit message) :) However, it would be even 
> nicer to understand the actual rationale behind these implicit features. Any 
> idea? Perhaps there are some clues in git history?
> 
> Also, perhaps a TODO to share this code with Clang? (to make it even clearer 
> that the frontend driver aims for full consistency with Clang here).
I think that the main difference between Clang and Flang is the lack of 
`TargetInfo` class.

[[ https://clang.llvm.org/doxygen/classclang_1_1TargetInfo.html | TargetInfo 
classes ]] are Clang specific and they are responsible for parsing/adding 
default target features. Every target performs initialization in different way 
(compare for example [[ 
https://clang.llvm.org/doxygen/Basic_2Targets_2AArch64_8cpp_source.html#l00960 
| AArch64 ]] vs [[ 
https://clang.llvm.org/doxygen/Basic_2Targets_2AMDGPU_8cpp_source.html#l00179 | 
AMDGPU ]] target initialization.

I don't want to make TargetInfo class Clang indendent (see discussion: 
https://discourse.llvm.org/t/rfc-targetinfo-library/64342 ). I also don't want 
to reimplement the whole TargetInfo class in Flang, because Flang already uses 
LLVM TargetMachine class (see: 
https://llvm.org/doxygen/classllvm_1_1TargetMachine.html and 
https://github.com/llvm/llvm-project/blob/main/flang/lib/Frontend/FrontendActions.cpp#L614
 )  which can play similar role as Clang TargetInfo IMO.

That's why I decided to implement `getExplicitAndImplicitAMDGPUTargetFeatures` 
function which performs initialization of default AMDGPU target features.


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

https://reviews.llvm.org/D145579

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

Reply via email to