[llvm-dev] LLVM EH tables much larger than GCC's

James Y Knight via llvm-dev llvm-dev at lists.llvm.org
Wed Jan 10 05:21:16 PST 2018

On Fri, Jan 5, 2018 at 9:58 PM, Ryan Prichard via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> 2. *Termination landing pads.*
> Clang sometimes uses a landing pad that calls __clang_call_terminate to
> terminate the program. GCC instead leaves a gap in the call site table,
> and the personality routine calls std::terminate. For the 4MB
> libQt5Core.so sample I'm looking at, I think it'd reduce the size of .text
> and .ARM.extab by maybe 7000 bytes (about 0.18%). (I see about 500 calls to
> __clang_call_terminate, and I estimate 14 bytes per call, assuming the call
> site table is using ULEB128 already.)
> I tried to implement this in LLVM, but couldn't find a good way to
> represent the calls that must be omitted from the call site table.
> Is there a reason LLVM doesn't handle this like GCC?
> Examples:
>  - C++03: https://godbolt.org/g/7BYbdG
>  - C++11: https://godbolt.org/g/bnHLvH

See also my comment and Reid's reply here:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180110/9d575d81/attachment.html>

More information about the llvm-dev mailing list