diff options
author | Reid Kleckner <reid@kleckner.net> | 2015-05-05 17:44:16 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2015-05-05 17:44:16 +0000 |
commit | 0738a9c02ef62d83791d0da8e220ead21723ea40 (patch) | |
tree | e2628543dd3636d26c795bc90235c55ab4b2a3df /llvm/lib/Target/X86/X86TargetMachine.cpp | |
parent | 61b305edfd861d27726d7b0a9cdffd18d6423cdb (diff) | |
download | llvm-0738a9c02ef62d83791d0da8e220ead21723ea40.zip llvm-0738a9c02ef62d83791d0da8e220ead21723ea40.tar.gz llvm-0738a9c02ef62d83791d0da8e220ead21723ea40.tar.bz2 |
Re-land "[WinEH] Add an EH registration and state insertion pass for 32-bit x86"
This reverts commit r236360.
This change exposed a bug in WinEHPrepare by opting win32 code into EH
preparation. We already knew that WinEHPrepare has bugs, and is the
status quo for x64, so I don't think that's a reason to hold off on this
change. I disabled exceptions in the sanitizer tests in r236505 and an
earlier revision.
llvm-svn: 236508
Diffstat (limited to 'llvm/lib/Target/X86/X86TargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86TargetMachine.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp index 919072a..9484f67 100644 --- a/llvm/lib/Target/X86/X86TargetMachine.cpp +++ b/llvm/lib/Target/X86/X86TargetMachine.cpp @@ -185,6 +185,7 @@ public: void addIRPasses() override; bool addInstSelector() override; bool addILPOpts() override; + bool addPreISel() override; void addPreRegAlloc() override; void addPostRegAlloc() override; void addPreEmitPass() override; @@ -220,6 +221,14 @@ bool X86PassConfig::addILPOpts() { return true; } +bool X86PassConfig::addPreISel() { + // Only add this pass for 32-bit x86. + Triple TT(TM->getTargetTriple()); + if (TT.getArch() == Triple::x86) + addPass(createX86WinEHStatePass()); + return true; +} + void X86PassConfig::addPreRegAlloc() { addPass(createX86CallFrameOptimization()); } |