================
@@ -188,12 +220,32 @@ void ModuleSymbolTable::CollectAsmSymbols(
}
void ModuleSymbolTable::CollectAsmSymvers(
- const Module &M, function_ref<void(StringRef, StringRef)> AsmSymver) {
- initializeRecordStreamer(M, [&](RecordStreamer &Streamer) {
- for (auto &KV : Streamer.symverAliases())
- for (auto &Alias : KV.second)
- AsmSymver(KV.first->getName(), Alias);
- });
+ const Module &M, function_ref<void(StringRef, StringRef)> AsmSymver,
+ function_ref<void(const DiagnosticInfo &DI)> DiagHandler, StringRef CPU,
+ StringRef Features) {
+
+ MDTuple *SymversMD =
+ dyn_cast_if_present<MDTuple>(M.getModuleFlag("global-asm-symvers"));
+
+ if (SymversMD) {
+ for (const Metadata *MD : SymversMD->operands()) {
+ const MDTuple *SymverMD = cast<MDTuple>(MD);
+ StringRef Name = cast<MDString>(SymverMD->getOperand(0))->getString();
+ for (unsigned i = 1; i < SymverMD->getNumOperands(); ++i) {
----------------
ilovepi wrote:
```suggestion
for (size_t i = 1, End = SymverMD->getNumOperands(); i < End; ++i) {
```
you can cache the size, since the optimizer doesn't always figure that bit out,
and you're not mutating the MD.
https://github.com/llvm/llvm-project/pull/174995
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits