From 5529affd651c7b525274e37519ae80f8bda9f8f2 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Thu, 11 Feb 2016 20:00:22 +0000 Subject: [PATCH] For now, disable shrink-wrapping (a new optimization pass that computes the safe point to insert the prologue and epilogue of the function) on X86. This prevents problems with some functions using TLS, such as in jemalloc, and which was the cause for Address Sanitizer crashes. The correct fix is still being discussed upstream. --- contrib/llvm/lib/Target/X86/X86FrameLowering.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp b/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp index 7f8ce4768c00..fad6ad9e75e8 100644 --- a/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp +++ b/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp @@ -2593,6 +2593,9 @@ bool X86FrameLowering::canUseAsEpilogue(const MachineBasicBlock &MBB) const { bool X86FrameLowering::enableShrinkWrapping(const MachineFunction &MF) const { // If we may need to emit frameless compact unwind information, give // up as this is currently broken: PR25614. +#if 1 + return false; +#else return (MF.getFunction()->hasFnAttribute(Attribute::NoUnwind) || hasFP(MF)) && // The lowering of segmented stack and HiPE only support entry blocks // as prologue blocks: PR26107. @@ -2601,6 +2604,7 @@ bool X86FrameLowering::enableShrinkWrapping(const MachineFunction &MF) const { // - adjustForHiPEPrologue MF.getFunction()->getCallingConv() != CallingConv::HiPE && !MF.shouldSplitStack(); +#endif } MachineBasicBlock::iterator X86FrameLowering::restoreWin32EHStackPointers(