[cfe-dev] __PRETTY_FUNCTION__ in clang

Mikhail Ramalho via cfe-dev cfe-dev at lists.llvm.org
Thu Feb 1 09:50:09 PST 2018


Hi all,

I recently noticed that clang and gcc print __PRETTY_FUNCTION__ in
different formats, e.g.:

template <typename T> struct X
{
  X() { std::cout << __PRETTY_FUNCTION__ << '\n';}
};
X<void> x;

In gcc:
X<T>::X() [with T = void]

In clang:
X<void>::X() [T = void]

I only found a discussion about it from 2011, that added the template args
to the output:

http://clang-developers.42468.n3.nabble.com/clang-and-gcc-implement-PRETTY-FUNCTION-differently-td3550386.html

I also created a patch that implements the gcc format, but broke all the
diagnostic tests, because it needs the instantiated name to report
warning/errors (which is correct in my opinion).

One solution would be adding a new attribute in PrintingPolicy to handle
the case where we want to print these predefined expressions, then enabling
it in PredefinedExpr::ComputeName.

Is there any interest in the community to match gcc's output? There are
some valid points in the previous thread.

Thank you,

-- 

Mikhail Ramalho.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180201/757556f5/attachment.html>


More information about the cfe-dev mailing list