NFC, this is just a straight code move along with header / namespace fixups.
Details
Diff Detail
Event Timeline
Maybe I'm stuck with an old diff or something?
lld/COFF/Writer.cpp | ||
---|---|---|
748–749 | I find the fact that for_each is now getting looked up via ADL on the llvm::parallel::par type ... disturbing. | |
lld/include/lld/Core/TaskGroup.h | ||
51–53 | I thought all of this was being moved to be implementation details of the algorithms? Also, all the code appears to still be LLD style? |
lld/COFF/Writer.cpp | ||
---|---|---|
748–749 | I can certainly qualify the function call, but I don't know of a way to disable ADL if that's what you're suggesting. | |
lld/include/lld/Core/TaskGroup.h | ||
51–53 | The executor stuff was all moved to an anonymous namespace inside of TaskGroup.cpp. TaskGroup cannot enjoy the same level of hiding because it needs to be usable from within a header file. Namely, Parallel.h. I can, however, move it to a detail namespace inside of Parallel.h if you prefer that. also: Yes rui pointed out the names in a previous patch and I forgot to update them. All of them have been fixed except for the few instances in this file. |
lld/COFF/Writer.cpp | ||
---|---|---|
748–749 | It's "easy": foo(a, b, c) uses ADL and (foo)(a, b, c) doesn't use ADL. ;] I'm not suggesting using (for_each) though. That seems a bit crazy. Writing llvm::foo will also disable ADL. ADL only fires for unqualified names. But then writing the code gets super ugly: llvm::for_each(llvm::parallel::par, ...); Yuck. I guess I mildly prefer that? The standard sure chose an API that ends up requiring a lot of characters to type. What do you or Rui think? I don't have strong feelings about which way you go here, so would generally defer to your or Rui's judgement. | |
lld/include/lld/Core/TaskGroup.h | ||
51–53 | I see, thanks. I think a detail namespace is a touch cleaner. I'm happy for you to do that in this patch, same with any name cleanup. |
- Changed naming conventions on the leftover LLD-style variables.
- Deleted TaskGroup.h and TaskGroup.cpp and moved corresponding code to Parallel.h and Parallel.cpp inside of the detail namespace.
lld/COFF/Writer.cpp | ||
---|---|---|
748–749 | It's worse than that, because it's going to be llvm::parallel::for_each(llvm::parallel::par, ...). We could nuke the intermediate parallel namespace and go with llvm::for_each(llvm::par, ...), or we could do using llvm::parallel at the top of a file. The namespace is sufficiently scoped that bringing it in shouldn't be too onerous. Personally I'm fine with any approach, including the ADL-based approach. That said, I don't think there's anything we can do to the API itself to alleviate this, so perhaps we don't need to do anything. Just leave it up to the users. |
lld/COFF/Writer.cpp | ||
---|---|---|
748–749 | Because we have using namespace llvm at beginning of this file, you don't need to qualify it with llvm::, no? |
LGTM on the LLVM side. Feel free to submit when you and Rui are happy with the usage pattern for this in LLD.
llvm/include/llvm/Support/Parallel.h | ||
---|---|---|
67 | closing namespace comment? |
I find the fact that for_each is now getting looked up via ADL on the llvm::parallel::par type ... disturbing.