[lld] [WPD][LLD] Allow regex matching of --lto-known-safe-vtables (PR #78505)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 17 13:52:17 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lld
@llvm/pr-subscribers-lld-elf
Author: None (modiking)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/78505.diff
2 Files Affected:
- (modified) lld/ELF/Driver.cpp (+5-1)
- (modified) lld/test/ELF/lto/devirt_validate_vtable_typeinfos.ll (+3-3)
``````````diff
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 6bef09eeca015aa..5ccc65600dcb910 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -1081,7 +1081,11 @@ static void ltoValidateAllVtablesHaveTypeInfos(opt::InputArgList &args) {
error("--lto-known-safe-vtables=: expected symbol to start with _ZTV, "
"but got " +
knownSafeName);
- vtableSymbolsWithNoRTTI.remove(knownSafeName);
+ Expected<GlobPattern> pat = GlobPattern::create(knownSafeName);
+ if (!pat)
+ error("--lto-known-safe-vtables=: " + toString(pat.takeError()));
+ vtableSymbolsWithNoRTTI.remove_if(
+ [&](StringRef s) { return pat->match(s); });
}
ctx.ltoAllVtablesHaveTypeInfos = vtableSymbolsWithNoRTTI.empty();
diff --git a/lld/test/ELF/lto/devirt_validate_vtable_typeinfos.ll b/lld/test/ELF/lto/devirt_validate_vtable_typeinfos.ll
index eb2e9970f723729..c85d8ce36452244 100644
--- a/lld/test/ELF/lto/devirt_validate_vtable_typeinfos.ll
+++ b/lld/test/ELF/lto/devirt_validate_vtable_typeinfos.ll
@@ -125,17 +125,17 @@
;; Index based WPD
; RUN: ld.lld %t1.o %t2_nortti.o -o %t8_index -save-temps --lto-whole-program-visibility --lto-validate-all-vtables-have-type-infos \
-; RUN: --lto-known-safe-vtables=_ZTV6Native -mllvm -pass-remarks=. 2>&1 | FileCheck %s --check-prefix=REMARK
+; RUN: --lto-known-safe-vtables=_ZTV6N* -mllvm -pass-remarks=. 2>&1 | FileCheck %s --check-prefix=REMARK
; RUN: llvm-dis %t1.o.4.opt.bc -o - | FileCheck %s --check-prefixes=CHECK-COMMON-IR-LABEL,CHECK-IR
;; Hybrid WPD
; RUN: ld.lld %t1_hybrid.o %t2_nortti.o -o %t8_hybrid -save-temps --lto-whole-program-visibility --lto-validate-all-vtables-have-type-infos \
-; RUN: --lto-known-safe-vtables=_ZTV6Native -mllvm -pass-remarks=. 2>&1 | FileCheck %s --check-prefix=REMARK
+; RUN: --lto-known-safe-vtables=_ZTV6N* -mllvm -pass-remarks=. 2>&1 | FileCheck %s --check-prefix=REMARK
; RUN: llvm-dis %t1_hybrid.o.4.opt.bc -o - | FileCheck %s --check-prefixes=CHECK-COMMON-IR-LABEL,CHECK-IR
;; Regular LTO WPD
; RUN: ld.lld %t1_regular.o %t2_nortti.o -o %t8_regular -save-temps --lto-whole-program-visibility --lto-validate-all-vtables-have-type-infos \
-; RUN: --lto-known-safe-vtables=_ZTV6Native -mllvm -pass-remarks=. 2>&1 | FileCheck %s --check-prefix=REMARK
+; RUN: --lto-known-safe-vtables=_ZTV6N* -mllvm -pass-remarks=. 2>&1 | FileCheck %s --check-prefix=REMARK
; RUN: llvm-dis %t8_regular.0.4.opt.bc -o - | FileCheck %s --check-prefixes=CHECK-COMMON-IR-LABEL,CHECK-IR
;; Only check for definitions of vtables symbols, just having a reference does not allow a type to
``````````
</details>
https://github.com/llvm/llvm-project/pull/78505
More information about the llvm-commits
mailing list