]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Revert r308867 (which was originally committed in the clang390-import
authordim <dim@FreeBSD.org>
Tue, 12 Mar 2019 18:19:44 +0000 (18:19 +0000)
committerdim <dim@FreeBSD.org>
Tue, 12 Mar 2019 18:19:44 +0000 (18:19 +0000)
commitfc7894cebc22f9490a6f509a5e88c6f300ca5322
tree083eb759271ac839aa7589ea72fb7d7ebb57881a
parent5954f59300f9489075944a6daa50c162a7c8916e
Revert r308867 (which was originally committed in the clang390-import
project branch):

  Work around LLVM PR30879, which is about a bad interaction between
  X86 Call Frame Optimization on i386 and libunwind, by disallowing the
  optimization for i386-freebsd12.

  This should fix some instances of broken exception handling when
  frame pointers are omitted, in particular some unittests run during
  the build of editors/libreoffice.

  This hack will be removed as soon as upstream has implemented a more
  permanent fix for this problem.

And indeed, after r345018 and r345019, which updated LLVM libunwind to
the most recent version, the above workaround is no longer needed.  The
upstream commit which fixed this is:

  https://llvm.org/viewvc/llvm-project?view=revision&revision=292723

Specifically, 32 bit (i386-freebsd) executables optimized with omitted
frame pointers and Call Frame Optimization should now behave correctly
when a C++ exception is thrown, and the stack is unwound.

Upstream PR: https://llvm.org/bugs/show_bug.cgi?id=30879
PR: 236062
MFC after: 1 month
X-MFC-With: r344779
contrib/llvm/lib/Target/X86/X86CallFrameOptimization.cpp