[llvm-dev] Making lambda function name consistent with GCC?

Tom Stellard via llvm-dev llvm-dev at lists.llvm.org
Mon May 3 11:02:58 PDT 2021


On 4/30/21 9:41 AM, Xun Li via llvm-dev wrote:
> Hi,
> 
> I noticed that when compiling lambda functions, the generated function
> names use different conventions than GCC.
> Example: https://godbolt.org/z/5qvqKqEe6
> The lambda in Clang is named "_Z3barIZ3foovE3$_0EvT_", while the one
> in GCC is named "_Z3barIZ3foovEUlvE_EvT_". Their demangled names are
> also different ("void bar<foo()::$_0>(foo()::$_0)" vs "void
> bar<foo()::{lambda()#1}>(foo()::{lambda()#1})").
> Lambdas are not covered by the ABI so this is OK.
> However there are use-cases where I find it very inconvenient when
> they generate different names. For example, if we are to compare the
> performance difference of the same software compiled under Clang and
> GCC, the perf stack traces will look very different because of the
> naming differences, making it hard to compare.
> Is there any particular reason that Clang uses a different naming
> convention for lambdas, and would there be push-backs if we were to
> make it consistent with GCC?

Can you file a bug for this?

-Tom

> Thanks.
> 



More information about the llvm-dev mailing list