yaxunl added inline comments.

================
Comment at: clang/lib/Driver/ToolChains/Clang.cpp:1115-1124
+  // Currently defaults to 3 in AMDGPUBaseInfo.cpp
+  // Using that default lets clang emit IR for amdgcn when llvm has been built
+  // without that target, provided the user wants this code object version
+  if (CodeObjVer != 3) {
+    CmdArgs.insert(CmdArgs.begin() + 1,
+                   Args.MakeArgString(Twine("--amdhsa-code-object-version=") +
+                                      Twine(CodeObjVer)));
----------------
jdoerfert wrote:
> JonChesterfield wrote:
> > t-tye wrote:
> > > This seem rather fragile. If the backend default changes and this code is 
> > > not updated it will likely result in creating the wrong code object 
> > > version.
> > That is true, though numbers 2 through 4 are used in 
> > getOrCheckAMDGPUCodeObjectVersion with 3 as the default there too.
> > 
> > Equally, today if we change the default in clang and forget to update the 
> > backend, we won't notice because we always pass this argument.
> > 
> > What we have at present is the back end has the state and the front end 
> > chooses the default. Needing to write '3' in both places is a symptom of 
> > that. Perhaps the back end should not have a default for it, requiring this 
> > to always be passed, at which point we are going to have a bad time 
> > building amdgpu openmp by default.
> > 
> > This change decouples the two for the (likely common) case where the user 
> > has not chosen to override the value. It's not ideal, but equally we don't 
> > change the version that often and there are lit tests that notice if we get 
> > it wrong. Plus stuff seems to break if the code object version is not as 
> > expected.
> > 
> > There may be a better solution. Target specific variable set by clang feels 
> > like something that will occur elsewhere.
> Arguably, the backend should have a default, the option should be used by 
> users that don't like the default.
> 
I think a reasonable behavior of clang is to add -mllvm 
--amdhsa-code-object-version=x only if users use -mcode-object-version=x or 
equivalent explicitly. Otherwise clang should not add -mllvm 
--amdhsa-code-object-version=x and let the backend decides the default code 
object version.

@t-tye @kzhuravl what do you think? thanks.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D98746

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

Reply via email to