[PATCH] D143565: [Asan] Ensure unpoisonning doesn't get inlined unnecessarily due to small holes in the mask

Sylvain Audi via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 28 09:26:46 PDT 2023

saudi added a comment.

In D143565#4620489 <https://reviews.llvm.org/D143565#4620489>, @vitalybuka wrote:

> Is this still relevant?

Hello, yes it still is to us, we are using this in our fork. I didn't have time to address the comments. and I would need some time also to get back into it, understanding the specifics and how to refactor this.

The real-life context that made this optimization necessary:

- Windows x64 target, with EH enabled
- a large function with many blocks, most of which contained local variables often with small gaps between them due to alignment etc. (it was a catch2 framework  unittest, where a `TEST_CASE` contained a big hierarchy `SECTION`)

With EH enabled, a large number of cleanup pads were generated, causing a lot of variables deinitialization code.
Having small gaps between variables, the shadow poisoning would be split into many inlined parts

The result was very large code size output by asan (>100MB object files), most of which was poisoning code.

  rG LLVM Github Monorepo



More information about the llvm-commits mailing list