[PATCH] D151589: [lld] add context-sensitive PGO options for MachO
    Fangrui Song via Phabricator via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Fri May 26 19:05:10 PDT 2023
    
    
  
MaskRay accepted this revision as: MaskRay.
MaskRay added inline comments.
This revision is now accepted and ready to land.
================
Comment at: clang/lib/Driver/ToolChains/CommonArgs.cpp:1356
 
+Arg *tools::getLastCSProfileGenerateArg(const ArgList &Args) {
+  auto *CSPGOGenerateArg = Args.getLastArg(options::OPT_fcs_profile_generate,
----------------
Similar code in Clang.cpp `addPGOAndCoverageFlags` can be replaced by this function.
================
Comment at: clang/lib/Driver/ToolChains/Darwin.cpp:459
+      llvm::sys::path::append(Path, "default_%m.profraw");
+      CmdArgs.push_back(Args.MakeArgString("--cs-profile-generate"));
+      CmdArgs.push_back(Args.MakeArgString(Twine("--cs-profile-path=") + Path));
----------------
String literal doesn't need `MakeArgString`
================
Comment at: clang/test/Driver/cspgo-lto.c:8
+
+// RUN: %clang -target apple-arm64-ios -### %t.o -flto=thin -fuse-ld=lld -fprofile-use 2>&1 | FileCheck %s --check-prefix=DARWIN-USE1
+// RUN: %clang -target apple-arm64-ios -### %t.o -flto=thin -fuse-ld=lld -fprofile-use=a.profdata 2>&1 | FileCheck %s --check-prefix=DARWIN-USE2
----------------
Prefer `--target=` to deprecated/legacy (since clang 3.x) `-target `
================
Comment at: lld/MachO/Driver.cpp:1640
   config->strictAutoLink = args.hasArg(OPT_strict_auto_link);
+  config->csProfileGenerate = args.hasArg(OPT_cs_profile_generate);
+  config->csProfilePath = args.getLastArgValue(OPT_cs_profile_path);
----------------
This needs a `lld/test/MachO` test. The ELF patch unfortunately doesn't add a test and I failed to notice it.
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D151589/new/
https://reviews.llvm.org/D151589
    
    
More information about the cfe-commits
mailing list