Add more DWARF 5 language constants.
[oota-llvm.git] / lib / CodeGen / WinEHPrepare.cpp
index a01adcd43d05ab34e7c28ee038683783547d4c63..c608bb0a31e9f235b918cf67acf16af88eba5e73 100644 (file)
 #include "llvm/CodeGen/Passes.h"
 #include "llvm/Analysis/LibCallSemantics.h"
 #include "llvm/IR/Function.h"
+#include "llvm/IR/IRBuilder.h"
 #include "llvm/IR/Instructions.h"
-#include "llvm/IR/Intrinsics.h"
 #include "llvm/Pass.h"
-#include "llvm/Target/TargetLowering.h"
+#include <memory>
+
 using namespace llvm;
 
 #define DEBUG_TYPE "winehprepare"
 
 namespace {
 class WinEHPrepare : public FunctionPass {
-  const TargetMachine *TM;
-  FunctionPass *DwarfPrepare;
+  std::unique_ptr<FunctionPass> DwarfPrepare;
 
 public:
   static char ID; // Pass identification, replacement for typeid.
   WinEHPrepare(const TargetMachine *TM = nullptr)
-      : FunctionPass(ID), TM(TM), DwarfPrepare(createDwarfEHPass(TM)) {
-    initializeDominatorTreeWrapperPassPass(*PassRegistry::getPassRegistry());
-  }
+      : FunctionPass(ID), DwarfPrepare(createDwarfEHPass(TM)) {}
 
   bool runOnFunction(Function &Fn) override;
 
@@ -83,12 +81,10 @@ bool WinEHPrepare::runOnFunction(Function &Fn) {
   if (!isMSVCPersonality(Pers))
     return DwarfPrepare->runOnFunction(Fn);
 
-  // FIXME: Cleanups are unimplemented. Replace them with calls to @llvm.trap.
+  // FIXME: Cleanups are unimplemented. Replace them with unreachable.
   if (Resumes.empty())
     return false;
 
-  Function *Trap =
-      Intrinsic::getDeclaration(Fn.getParent(), Intrinsic::trap, None);
   for (ResumeInst *Resume : Resumes) {
     IRBuilder<>(Resume).CreateUnreachable();
     Resume->eraseFromParent();