[llvm] r278170 - Add a platform independent version of __PRETTY_FUNCTION__.

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 9 15:18:57 PDT 2016


Zachary Turner via llvm-commits <llvm-commits at lists.llvm.org> writes:
> Author: zturner
> Date: Tue Aug  9 17:03:45 2016
> New Revision: 278170
>
> URL: http://llvm.org/viewvc/llvm-project?rev=278170&view=rev
> Log:
> Add a platform independent version of __PRETTY_FUNCTION__.
>
> MSVC doesn't have this, it only has __FUNCSIG__.  So this adds
> a new macro called LLVM_PRETTY_FUNCTION which evaluates to the
> right thing on any platform.

Depending what you're planning on using this for, you might be better off
using llvm::getTypeName (include/llvm/Support/TypeName.h). See also the
commit that added getTypeName for a number of caveats about trying to do
this portably.

Finally, this at the very least needs some big warnings about the fact
that it isn't portable at all and is only suitable for things like
logging. It also probably needs a third case for compilers that support
neither FUNCSIG nor PRETTY_FUNCTION.

> Modified:
>     llvm/trunk/include/llvm/Support/Compiler.h
>
> Modified: llvm/trunk/include/llvm/Support/Compiler.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Compiler.h?rev=278170&r1=278169&r2=278170&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/Compiler.h (original)
> +++ llvm/trunk/include/llvm/Support/Compiler.h Tue Aug  9 17:03:45 2016
> @@ -453,6 +453,14 @@ void AnnotateIgnoreWritesEnd(const char
>  #define LLVM_DUMP_METHOD LLVM_ATTRIBUTE_NOINLINE
>  #endif
>  
> +/// \brief Gets a user-friendly looking function signature for the current scope
> +/// using the best available method on each platform.
> +#if defined(LLVM_ON_WIN32)
> +#define LLVM_PRETTY_FUNCTION __FUNCSIG__
> +#else
> +#define LLVM_PRETTY_FUNCTION __PRETTY_FUNCTION__
> +#endif
> +
>  /// \macro LLVM_THREAD_LOCAL
>  /// \brief A thread-local storage specifier which can be used with globals,
>  /// extern globals, and static globals.
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list