[PATCH] D67409: [RISCV] enable LTO support, pass some options to linker.

Eli Friedman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 8 11:39:28 PST 2019


efriedma added inline comments.


================
Comment at: clang/lib/Driver/ToolChains/CommonArgs.cpp:498
+    CmdArgs.push_back(
+        Args.MakeArgString(Twine("-plugin-opt=-target-abi=") + ABIName));
 }
----------------
khchen wrote:
> efriedma wrote:
> > I don't think this change is right.  In general, target features should be encoded in bitcode files.  This allows compiling different files with different target features, and using runtime detection to only run certain codepaths.  And it makes sure that we end up with a sane result if the user doesn't pass target feature flags on the link line.
> > 
> > Also, it probably isn't appropriate to make target-independent changes in a commit tagged [RISCV]; most people would assume a change marked like that doesn't have target-independent effects.
> > 
> > (Sorry about the delayed response to this review; I only just ran into this.)
> > I don't think this change is right. In general, target features should be encoded in bitcode files. This allows compiling different files with different target features, and using runtime detection to only run certain codepaths. And it makes sure that we end up with a sane result if the user doesn't pass target feature flags on the link line.
> > 
> 
> I'm curious about your scenario, LTO will link two bitcodes file into one, so which target-features should be kept in final bitcode since different files have different target features? For example, one target features" is "+armv7-a" and another is "+armv8-a". 
> 
> I guess maybe your case is they are same target-features in different files, but this patch will overwrite the encoded target-feature as default.
> 
> anyway, I agree with you. I found the target features does not encoded in bitcode files when enabling LTO in RISCV, I will fixed it and revert the target feature part, thanks.
> 
> 
> > Also, it probably isn't appropriate to make target-independent changes in a commit tagged [RISCV]; most people would assume a change marked like that doesn't have target-independent effects.
> > 
> sorry,  I will take care of it in next time.
> 
> > (Sorry about the delayed response to this review; I only just ran into this.)
> 
> 
Target features are encoded into IR on a per-function basis, so we can keep both.

But yes, I'm more worried about the implicit expectation that the target flags are specified on the link line; this isn't reliably true with common build systems.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D67409





More information about the cfe-commits mailing list