[PATCH] D82883: [LLD][COFF] Deduplicate .pdata entries

Reid "Away June-Sep" Kleckner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 10 17:13:33 PDT 2020


rnk added a comment.

This all sounds like this bug: https://bugs.llvm.org/show_bug.cgi?id=35337
Which was supposed to be fixed in rG107f55005bc9c9de2378057f56ae02016795a3ae <https://reviews.llvm.org/rG107f55005bc9c9de2378057f56ae02016795a3ae>

As I understand it, we have several catch blocks that are functionally identical (same text), but they have different xdata (EH states), and we probably shouldn't fold them together.

> Note how all associative COMDATs are attached to .text$mn, none to .text$x, this seems to be by design.

I see, so that prevents our fix from doing what it's supposed to. However, I notice that all the `.text$x` sections are associated with the `.text$mn` section. Is ICF running on the `.text$x` sections even though they are associated with something else? It probably shouldn't be if it is. That could be the fix.

---

By the way, it would be a great improvement to LLVM to emit funclets in a separate `.text$x` section. It's a natural way to implement hot/cold code partitioning, it separates code that only runs during EH from non-exceptional code. This is actually one of the few advantages of funclets over landingpads: it's really easy to implement this partitioning.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D82883/new/

https://reviews.llvm.org/D82883



More information about the llvm-commits mailing list