[PATCH] Only use IR intrinsincs for __builtin_longjmp / __builtin_setjmp when the target supports them.

Joerg Sonnenberger joerg at NetBSD.org
Fri Feb 20 11:39:32 PST 2015


Hi grosbach, t.p.northover, hans,

Ruby is currently crashing on ARM because SelectionDAG turns llvm.eh.sjlj.longjmp and llvm.eh.sjlj.setjmp into nonsense, if the target has no lowering for them. Handle this properly in the frontend by not using the IR intrinsics unless the platform is known to have a working implementation. As documented with the FIXME, the Darwin lowering does not qualify either, it is written strictly for use by EH.

http://reviews.llvm.org/D7795

Files:
  include/clang/Basic/Builtins.def
  lib/CodeGen/CGBuiltin.cpp
  lib/CodeGen/TargetInfo.cpp
  lib/CodeGen/TargetInfo.h
  test/CodeGen/2003-08-06-BuiltinSetjmpLongjmp.c
  test/CodeGen/builtin-longjmp.c

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7795.20422.patch
Type: text/x-patch
Size: 6227 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150220/96aa46ec/attachment.bin>


More information about the cfe-commits mailing list