[PATCH] D62381: Use SymbolTable::insert() to implement --trace.
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon May 27 18:48:26 PDT 2019
MaskRay added inline comments.
================
Comment at: lld/ELF/SymbolTable.h:38
- ArrayRef<Symbol *> getSymbols() const { return SymVector; }
+ void forEachSymbol(std::function<void(Symbol *)> Fn) {
+ for (Symbol *Sym : SymVector)
----------------
MaskRay wrote:
> grimar wrote:
> > ruiu wrote:
> > > grimar wrote:
> > > > `llvm::function_ref` should probably be a bit better, btw.
> > > I didn't take a look at the assembly, but isn't this something that a compiler can optimize and erases std::function? Since this is an inline function, a compiler knows exactly how a given lambda is used.
> > I do not know the answer.
> `function_ref` should be better, but I don't know if compilers can optimize out the heap allocation used for the lambda.
>
> I still want to understand how complicated the signature of `llvm::make_filter_range` is. Let me check
```
struct FilterOutPlaceholder {
bool operator()(Symbol *S) const {
return !S->isPlaceholder();
}
};
static iterator_range<filter_iterator<std::vector<Symbol *>::iterator, FilterOutPlaceholder>> symbols() {
return make_filter_range(Symtab->SymVector, FilterOutPlaceholder());
}
```
The benefit is that the backtrace will be simpler in a debugger.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D62381/new/
https://reviews.llvm.org/D62381
More information about the llvm-commits
mailing list