Author: Nuri Amari Date: 2025-06-06T17:58:19-04:00 New Revision: 347186b25969adcb8621c0b21226f10e7a193f8d
URL: https://github.com/llvm/llvm-project/commit/347186b25969adcb8621c0b21226f10e7a193f8d DIFF: https://github.com/llvm/llvm-project/commit/347186b25969adcb8621c0b21226f10e7a193f8d.diff LOG: Avoid Assertion Failure Using -fcs-profile-generate with distributed thin-lto (#129736) When using `-fcs-generate-profile` with distributed thin-lto in the same fashion we do for local thin-lto, we hit the following assertion: https://github.com/llvm/llvm-project/blob/6041c745f32e8fd60ed24e29e7d919d8d1c87ca6/llvm/lib/Support/PGOOptions.cpp#L36 Using local thin-lto with LLD for MachO, we set the missing path automatically to a default value: https://reviews.llvm.org/D151589. In this fix we add the same behavior. --------- Co-authored-by: Nuri Amari <nuriam...@fb.com> Added: clang/test/CodeGen/distributed-thin-lto/backend-skip.ll clang/test/CodeGen/distributed-thin-lto/basic.ll clang/test/CodeGen/distributed-thin-lto/cfi-devirt.ll clang/test/CodeGen/distributed-thin-lto/cfi.ll clang/test/CodeGen/distributed-thin-lto/cs-irpgo.c clang/test/CodeGen/distributed-thin-lto/newpm.ll clang/test/CodeGen/distributed-thin-lto/objc-contract-pass.ll clang/test/CodeGen/distributed-thin-lto/supports-hot-cold-new.ll Modified: clang/lib/CodeGen/BackendUtil.cpp Removed: clang/test/CodeGen/thinlto-distributed-backend-skip.ll clang/test/CodeGen/thinlto-distributed-cfi-devirt.ll clang/test/CodeGen/thinlto-distributed-cfi.ll clang/test/CodeGen/thinlto-distributed-newpm.ll clang/test/CodeGen/thinlto-distributed-objc-contract-pass.ll clang/test/CodeGen/thinlto-distributed-supports-hot-cold-new.ll clang/test/CodeGen/thinlto-distributed.ll ################################################################################ diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 9cecf3c0f586e..88b3a4943e0d8 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -1352,7 +1352,7 @@ runThinLTOBackend(CompilerInstance &CI, ModuleSummaryIndex *CombinedIndex, // Context sensitive profile. if (CGOpts.hasProfileCSIRInstr()) { Conf.RunCSIRInstr = true; - Conf.CSIRProfile = std::move(CGOpts.InstrProfileOutput); + Conf.CSIRProfile = getProfileGenName(CGOpts); } else if (CGOpts.hasProfileCSIRUse()) { Conf.RunCSIRInstr = false; Conf.CSIRProfile = std::move(CGOpts.ProfileInstrumentUsePath); diff --git a/clang/test/CodeGen/thinlto-distributed-backend-skip.ll b/clang/test/CodeGen/distributed-thin-lto/backend-skip.ll similarity index 87% rename from clang/test/CodeGen/thinlto-distributed-backend-skip.ll rename to clang/test/CodeGen/distributed-thin-lto/backend-skip.ll index d7b8225ee2693..62aa8aa8e7dc4 100644 --- a/clang/test/CodeGen/thinlto-distributed-backend-skip.ll +++ b/clang/test/CodeGen/distributed-thin-lto/backend-skip.ll @@ -6,7 +6,7 @@ ; RUN: opt -thinlto-bc -o %t.o %s ; RUN: %clang_cc1 -triple x86_64-grtev4-linux-gnu \ -; RUN: -fthinlto-index=%S/Inputs/thinlto-distributed-backend-skip.bc \ +; RUN: -fthinlto-index=%S/../Inputs/thinlto-distributed-backend-skip.bc \ ; RUN: -emit-llvm -o - -x ir %t.o | FileCheck %s target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" diff --git a/clang/test/CodeGen/thinlto-distributed.ll b/clang/test/CodeGen/distributed-thin-lto/basic.ll similarity index 100% rename from clang/test/CodeGen/thinlto-distributed.ll rename to clang/test/CodeGen/distributed-thin-lto/basic.ll diff --git a/clang/test/CodeGen/thinlto-distributed-cfi-devirt.ll b/clang/test/CodeGen/distributed-thin-lto/cfi-devirt.ll similarity index 97% rename from clang/test/CodeGen/thinlto-distributed-cfi-devirt.ll rename to clang/test/CodeGen/distributed-thin-lto/cfi-devirt.ll index acbcdcdb4fd02..a5792eee8abfb 100644 --- a/clang/test/CodeGen/thinlto-distributed-cfi-devirt.ll +++ b/clang/test/CodeGen/distributed-thin-lto/cfi-devirt.ll @@ -33,7 +33,7 @@ ; RUN: llvm-dis %t.o.thinlto.bc -o - | FileCheck %s --check-prefix=CHECK-DIS ; Round trip it through llvm-as ; RUN: llvm-dis %t.o.thinlto.bc -o - | llvm-as -o - | llvm-dis -o - | FileCheck %s --check-prefix=CHECK-DIS -; CHECK-DIS: ^0 = module: (path: "{{.*}}thinlto-distributed-cfi-devirt.ll.tmp.o", hash: ({{.*}}, {{.*}}, {{.*}}, {{.*}}, {{.*}})) +; CHECK-DIS: ^0 = module: (path: "{{.*}}cfi-devirt.ll.tmp.o", hash: ({{.*}}, {{.*}}, {{.*}}, {{.*}}, {{.*}})) ; CHECK-DIS: ^1 = gv: (guid: 8346051122425466633, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 1, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 18, funcFlags: (readNone: 0, readOnly: 0, noRecurse: 0, returnDoesNotAlias: 0, noInline: 0, alwaysInline: 0, noUnwind: 0, mayThrow: 0, hasUnknownCall: 1, mustBeUnreachable: 0), typeIdInfo: (typeTests: (^2), typeCheckedLoadVCalls: (vFuncId: (^2, offset: 8), vFuncId: (^2, offset: 0)))))) ; CHECK-DIS: ^2 = typeid: (name: "_ZTS1A", summary: (typeTestRes: (kind: allOnes, sizeM1BitWidth: 7), wpdResolutions: ((offset: 0, wpdRes: (kind: branchFunnel)), (offset: 8, wpdRes: (kind: singleImpl, singleImplName: "_ZN1A1nEi"))))) ; guid = 7004155349499253778 diff --git a/clang/test/CodeGen/thinlto-distributed-cfi.ll b/clang/test/CodeGen/distributed-thin-lto/cfi.ll similarity index 95% rename from clang/test/CodeGen/thinlto-distributed-cfi.ll rename to clang/test/CodeGen/distributed-thin-lto/cfi.ll index 6023ba8f32df9..696f2dc4ea634 100644 --- a/clang/test/CodeGen/thinlto-distributed-cfi.ll +++ b/clang/test/CodeGen/distributed-thin-lto/cfi.ll @@ -23,7 +23,7 @@ ; RUN: llvm-dis %t.o.thinlto.bc -o - | FileCheck %s --check-prefix=CHECK-DIS ; Round trip it through llvm-as ; RUN: llvm-dis %t.o.thinlto.bc -o - | llvm-as -o - | llvm-dis -o - | FileCheck %s --check-prefix=CHECK-DIS -; CHECK-DIS: ^0 = module: (path: "{{.*}}thinlto-distributed-cfi.ll.tmp.o", hash: ({{.*}}, {{.*}}, {{.*}}, {{.*}}, {{.*}})) +; CHECK-DIS: ^0 = module: (path: "{{.*}}cfi.ll.tmp.o", hash: ({{.*}}, {{.*}}, {{.*}}, {{.*}}, {{.*}})) ; CHECK-DIS: ^1 = gv: (guid: 8346051122425466633, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 1, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 7, funcFlags: (readNone: 0, readOnly: 0, noRecurse: 1, returnDoesNotAlias: 0, noInline: 0, alwaysInline: 0, noUnwind: 1, mayThrow: 0, hasUnknownCall: 0, mustBeUnreachable: 0), typeIdInfo: (typeTests: (^2))))) ; CHECK-DIS: ^2 = typeid: (name: "_ZTS1A", summary: (typeTestRes: (kind: single, sizeM1BitWidth: 0))) ; guid = 7004155349499253778 diff --git a/clang/test/CodeGen/distributed-thin-lto/cs-irpgo.c b/clang/test/CodeGen/distributed-thin-lto/cs-irpgo.c new file mode 100644 index 0000000000000..d4c2e5d4fe6ee --- /dev/null +++ b/clang/test/CodeGen/distributed-thin-lto/cs-irpgo.c @@ -0,0 +1,8 @@ +// RUN: mkdir -p %t +// RUN: %clang -target x86_64-apple-darwin -fcs-profile-generate -flto=thin -c -o %t/main.bc %s +// RUN: llvm-lto2 run --thinlto-distributed-indexes %t/main.bc -o %t/index -r=%t/main.bc,_main,px +// RUN: %clang -target x86_64-apple-darwin -fcs-profile-generate -c -o %t/main.o -fthinlto-index=%t/main.bc.thinlto.bc %t/main.bc + +int main() { + return 0; +} diff --git a/clang/test/CodeGen/thinlto-distributed-newpm.ll b/clang/test/CodeGen/distributed-thin-lto/newpm.ll similarity index 100% rename from clang/test/CodeGen/thinlto-distributed-newpm.ll rename to clang/test/CodeGen/distributed-thin-lto/newpm.ll diff --git a/clang/test/CodeGen/thinlto-distributed-objc-contract-pass.ll b/clang/test/CodeGen/distributed-thin-lto/objc-contract-pass.ll similarity index 100% rename from clang/test/CodeGen/thinlto-distributed-objc-contract-pass.ll rename to clang/test/CodeGen/distributed-thin-lto/objc-contract-pass.ll diff --git a/clang/test/CodeGen/thinlto-distributed-supports-hot-cold-new.ll b/clang/test/CodeGen/distributed-thin-lto/supports-hot-cold-new.ll similarity index 100% rename from clang/test/CodeGen/thinlto-distributed-supports-hot-cold-new.ll rename to clang/test/CodeGen/distributed-thin-lto/supports-hot-cold-new.ll _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits