[llvm-commits] [PATCH] __builtin_debugtrap() intrinsic function (change to Clang and CodeGen)

Michael Liao michael.liao at intel.com
Fri Oct 19 11:44:47 PDT 2012


On Fri, 2012-10-19 at 11:23 -0700, Shuxin Yang wrote:
> Hi,
> 
>     This patch is to fix radar://8426430. It is about llvm support of 
> __builtin_debugtrap()
> which is supposed to consistently raise SIGTRAP across all systems. In 
> contrast,
> __builtin_trap() behave differently on different systems. e.g. it raises 
> SIGTRAP on ARM, and
> SIGILL on X86. The purpose of __builtin_debugtrap() is to consistently 
> provide "trap"
> functionality, in the mean time preserve the compatibility with on gcc 
> on __builtin_trap().
> 
>    The X86 backend is already able to handle debugtrap(). This patch is to:
>    1) make front-end recognize "__builtin_debugtrap()" (emboddied in the 
> one-line change to Clang).
>    2) In DAG legalization phase, by default, "debugtrap" will be 
> replaced with "trap", which
>       make the __builtin_debugtrap() "available" to all existing ports 
> without the hassle of
>       changing their code.
>    3) If trap-function is specified (via -trap-func=xyz to llc), both 
> __builtin_debugtrap() and
>       __builtin_trap() will be expanded into the function call of the 
> specified trap function.
>      This behavior may need change in the future.

LGTM for the X86 specific part.

- Michael

> 
>    The provided testing-case is to make sure 2) and 3) are working for 
> ARM port, and we
> already have a testing case for x86.
> 
>    This change pass regression test, SingleSource and MultipleSource test.
> 
> Thanks
> Shuxin
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list