[PATCH] D130875: [Metadata] Introduce MD_pcsections
Vitaly Buka via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 4 20:17:02 PDT 2022
vitalybuka added inline comments.
================
Comment at: llvm/lib/IR/MDBuilder.cpp:166
+
+ for (size_t i = 0; i < Sections.size(); i++) {
+ const StringRef &S = Sections[i];
----------------
vitalybuka wrote:
> melver wrote:
> > vitalybuka wrote:
> > > is implicit mapping from Sections[i] to AuxData[i] in interface is neccecary?
> > > can you do SomeMap<StringRef, <ArrayRef<Constant *>> ?
> > >
> > > That would be cleaner
> > Map doesn't have stable iteration order. So I'm trying ArrayRef<std::pair<StringRef, SmallVector<Constant*>>>. The problem is that the inner array can't be an ArrayRef, otherwise users of the function have to either convert to something that can convert to ArrayRef<std::pair<StringRef, ArrayRef>> ensuring that whatever inner ref they pass lives long enough.
> >
> > The reason of the earlier interface was to avoid forcing SmallVector or any particular vector onto callers by sticking to ArrayRef. But by wrapping it into a std::pair, the ArrayRef conversion can't be done implicitly anymore, so usability suffers.
> >
> > This means that in SanitizerBinaryMetadadata, I'm now using a SmallVector<StringRef, SmallVector<Constant*>>> (instead of just a SmallVector<StringRef>) where the inner SmallVector will always be 0-sized, which wastes space but didn't before. Perhaps this was premature optimization.
> >> Map doesn't have stable iteration order.
> Do you need a particular section order?
>
> pair<stringref, SmallVector> is not nice, but better than obvious mapping.
>
>
> maybe real builder?
> ```
> PCSectionsBuilder B = MDB.getPCSectionsBuilder();
> F.setMetadata(
> B.addSection(S, {c1})
> .addSection(S, {}).
> .addSection(S, {c1, c2})
> .buid());
> ```
> Map doesn't have stable iteration order.
Do you need a particular section order?
pair<stringref, SmallVector> is not nice, but better than non-obvious mapping.
maybe real builder?
```
PCSectionsBuilder B = MDB.getPCSectionsBuilder();
F.setMetadata(
B.addSection(S, {c1})
.addSection(S, {}).
.addSection(S, {c1, c2})
.build());
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D130875/new/
https://reviews.llvm.org/D130875
More information about the llvm-commits
mailing list