Subzero. Fixes memory leaks.

Adds named constructors to initialzers. Removes destructor from Inst.

BUG= None
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1181013016.
diff --git a/src/IceConverter.cpp b/src/IceConverter.cpp
index 6b83b15..baa8eeb 100644
--- a/src/IceConverter.cpp
+++ b/src/IceConverter.cpp
@@ -754,7 +754,7 @@
   if (const auto CDA = dyn_cast<ConstantDataArray>(Initializer)) {
     assert(!HasOffset && isa<IntegerType>(CDA->getElementType()) &&
            (cast<IntegerType>(CDA->getElementType())->getBitWidth() == 8));
-    Global.addInitializer(new Ice::VariableDeclaration::DataInitializer(
+    Global.addInitializer(Ice::VariableDeclaration::DataInitializer::create(
         CDA->getRawDataValues().data(), CDA->getNumElements()));
     return;
   }
@@ -763,8 +763,8 @@
     if (const auto AT = dyn_cast<ArrayType>(Initializer->getType())) {
       assert(!HasOffset && isa<IntegerType>(AT->getElementType()) &&
              (cast<IntegerType>(AT->getElementType())->getBitWidth() == 8));
-      Global.addInitializer(
-          new Ice::VariableDeclaration::ZeroInitializer(AT->getNumElements()));
+      Global.addInitializer(Ice::VariableDeclaration::ZeroInitializer::create(
+          AT->getNumElements()));
     } else {
       llvm_unreachable("Unhandled constant aggregate zero type");
     }
@@ -786,7 +786,7 @@
       const Ice::GlobalDeclaration *Addr =
           getConverter().getGlobalDeclaration(GV);
       Global.addInitializer(
-          new Ice::VariableDeclaration::RelocInitializer(Addr, Offset));
+          Ice::VariableDeclaration::RelocInitializer::create(Addr, Offset));
       return;
     }
     default:
@@ -867,7 +867,7 @@
           Converter.convertToIceType(FuncType->getParamType(I)));
     }
     FunctionDeclaration *IceFunc = FunctionDeclaration::create(
-        Signature, Func.getCallingConv(), Func.getLinkage(), Func.empty());
+        Ctx, Signature, Func.getCallingConv(), Func.getLinkage(), Func.empty());
     IceFunc->setName(Func.getName());
     GlobalDeclarationMap[&Func] = IceFunc;
   }
@@ -876,7 +876,7 @@
                                      E = Mod->global_end();
        I != E; ++I) {
     const GlobalVariable *GV = I;
-    VariableDeclaration *Var = VariableDeclaration::create();
+    VariableDeclaration *Var = VariableDeclaration::create(Ctx);
     Var->setName(GV->getName());
     Var->setAlignment(GV->getAlignment());
     Var->setIsConstant(GV->isConstant());