diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2015-10-01 17:00:56 +0000 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2015-10-01 17:00:56 +0000 |
commit | 1ed20db720988e8cfc21f02d35c95a61b29410b5 (patch) | |
tree | d3c4b7d9a4302efde973ffa1657f5be41e4620c8 /llvm/lib/Target/X86/X86TargetMachine.cpp | |
parent | 42ce2d3ba335fe1a3213f3538f22fc73e7ec4621 (diff) | |
download | llvm-1ed20db720988e8cfc21f02d35c95a61b29410b5.zip llvm-1ed20db720988e8cfc21f02d35c95a61b29410b5.tar.gz llvm-1ed20db720988e8cfc21f02d35c95a61b29410b5.tar.bz2 |
Revert r248959, "[WinEH] Emit int3 after noreturn calls on Win64"
It broke; LLVM :: CodeGen__Generic__2009-11-16-BadKillsCrash.ll
llvm-svn: 249032
Diffstat (limited to 'llvm/lib/Target/X86/X86TargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86TargetMachine.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp index d318244..2e869eb 100644 --- a/llvm/lib/Target/X86/X86TargetMachine.cpp +++ b/llvm/lib/Target/X86/X86TargetMachine.cpp @@ -110,6 +110,13 @@ X86TargetMachine::X86TargetMachine(const Target &T, const Triple &TT, OL), TLOF(createTLOF(getTargetTriple())), Subtarget(TT, CPU, FS, *this, Options.StackAlignmentOverride) { + // Windows stack unwinder gets confused when execution flow "falls through" + // after a call to 'noreturn' function. + // To prevent that, we emit a trap for 'unreachable' IR instructions. + // (which on X86, happens to be the 'ud2' instruction) + if (Subtarget.isTargetWin64()) + this->Options.TrapUnreachable = true; + // By default (and when -ffast-math is on), enable estimate codegen for // everything except scalar division. By default, use 1 refinement step for // all operations. Defaults may be overridden by using command-line options. |