diff ir/irtype.cpp @ 1571:8d086d552909

IntegerType is now contextifed. Requires llvm >= 78969. resistor says this will be the last context API change :)
author Benjamin Kramer <benny.kra@gmail.com>
date Fri, 14 Aug 2009 00:39:18 +0200
parents 755abafbf25d
children 40bd4a0d4870
line wrap: on
line diff
--- a/ir/irtype.cpp	Thu Aug 06 16:02:14 2009 +0200
+++ b/ir/irtype.cpp	Fri Aug 14 00:39:18 2009 +0200
@@ -43,69 +43,70 @@
 {
     const llvm::Type* t2;
 
+    // FIXME: don't use getGlobalContext
     switch(t->ty)
     {
     case Tvoid:
-        return llvm::Type::VoidTy;
+        return llvm::Type::getVoidTy(llvm::getGlobalContext());
 
     case Tint8:
     case Tuns8:
     case Tchar:
-        return llvm::Type::Int8Ty;
+        return llvm::Type::getInt8Ty(llvm::getGlobalContext());
 
     case Tint16:
     case Tuns16:
     case Twchar:
-        return llvm::Type::Int16Ty;
+        return llvm::Type::getInt16Ty(llvm::getGlobalContext());
 
     case Tint32:
     case Tuns32:
     case Tdchar:
-        return llvm::Type::Int32Ty;
+        return llvm::Type::getInt32Ty(llvm::getGlobalContext());
 
     case Tint64:
     case Tuns64:
-        return llvm::Type::Int64Ty;
+        return llvm::Type::getInt64Ty(llvm::getGlobalContext());
 
     /*
     case Tint128:
     case Tuns128:
-        return llvm::IntegerType::get(128);
+        return llvm::IntegerType::get(llvm::getGlobalContext(), 128);
     */
 
     case Tfloat32:
     case Timaginary32:
-        return llvm::Type::FloatTy;
+        return llvm::Type::getFloatTy(llvm::getGlobalContext());
 
     case Tfloat64:
     case Timaginary64:
-        return llvm::Type::DoubleTy;
+        return llvm::Type::getDoubleTy(llvm::getGlobalContext());
 
     case Tfloat80:
     case Timaginary80:
         // only x86 has 80bit float
         if (global.params.cpu == ARCHx86 || global.params.cpu == ARCHx86_64)
-            return llvm::Type::X86_FP80Ty;
+            return llvm::Type::getX86_FP80Ty(llvm::getGlobalContext());
         // other platforms use 64bit reals
         else
-            return llvm::Type::DoubleTy;
+            return llvm::Type::getDoubleTy(llvm::getGlobalContext());
 
     case Tcomplex32:
-        t2 = llvm::Type::FloatTy;
-        return llvm::StructType::get(gIR->context(), t2, t2, NULL);
+        t2 = llvm::Type::getFloatTy(llvm::getGlobalContext());
+        return llvm::StructType::get(llvm::getGlobalContext(), t2, t2, NULL);
 
     case Tcomplex64:
-        t2 = llvm::Type::DoubleTy;
-        return llvm::StructType::get(gIR->context(), t2, t2, NULL);
+        t2 = llvm::Type::getDoubleTy(llvm::getGlobalContext());
+        return llvm::StructType::get(llvm::getGlobalContext(), t2, t2, NULL);
 
     case Tcomplex80:
         t2 = (global.params.cpu == ARCHx86 || global.params.cpu == ARCHx86_64)
-            ? llvm::Type::X86_FP80Ty
-            : llvm::Type::DoubleTy;
-        return llvm::StructType::get(gIR->context(), t2, t2, NULL);
+            ? llvm::Type::getX86_FP80Ty(llvm::getGlobalContext())
+            : llvm::Type::getDoubleTy(llvm::getGlobalContext());
+        return llvm::StructType::get(llvm::getGlobalContext(), t2, t2, NULL);
 
     case Tbool:
-        return llvm::Type::Int1Ty;
+        return llvm::Type::getInt1Ty(llvm::getGlobalContext());
     }
 
     assert(0 && "not basic type");
@@ -117,7 +118,7 @@
 //////////////////////////////////////////////////////////////////////////////
 
 IrTypePointer::IrTypePointer(Type * dt)
-: IrType(dt, llvm::OpaqueType::get())
+: IrType(dt, llvm::OpaqueType::get(llvm::getGlobalContext()))
 {
 }
 
@@ -137,8 +138,8 @@
     assert(dt->ty == Tpointer && "not pointer type");
 
     const llvm::Type* elemType = DtoType(dt->nextOf());
-    if (elemType == llvm::Type::VoidTy)
-        elemType = llvm::Type::Int8Ty;
+    if (elemType == llvm::Type::getVoidTy(llvm::getGlobalContext()))
+        elemType = llvm::Type::getInt8Ty(llvm::getGlobalContext());
     return llvm::PointerType::get(elemType, 0);
 }
 
@@ -147,7 +148,7 @@
 //////////////////////////////////////////////////////////////////////////////
 
 IrTypeSArray::IrTypeSArray(Type * dt)
-: IrType(dt, llvm::OpaqueType::get())
+: IrType(dt, llvm::OpaqueType::get(llvm::getGlobalContext()))
 {
     assert(dt->ty == Tsarray && "not static array type");
     TypeSArray* tsa = (TypeSArray*)dt;
@@ -168,8 +169,8 @@
 const llvm::Type * IrTypeSArray::sarray2llvm(Type * t)
 {
     const llvm::Type* elemType = DtoType(t->nextOf());
-    if (elemType == llvm::Type::VoidTy)
-        elemType = llvm::Type::Int8Ty;
+    if (elemType == llvm::Type::getVoidTy(llvm::getGlobalContext()))
+        elemType = llvm::Type::getInt8Ty(llvm::getGlobalContext());
     return llvm::ArrayType::get(elemType, dim);
 }
 
@@ -178,7 +179,7 @@
 //////////////////////////////////////////////////////////////////////////////
 
 IrTypeArray::IrTypeArray(Type * dt)
-: IrType(dt, llvm::OpaqueType::get())
+: IrType(dt, llvm::OpaqueType::get(llvm::getGlobalContext()))
 {
 }
 
@@ -199,12 +200,12 @@
 
     // get .ptr type
     const llvm::Type* elemType = DtoType(t->nextOf());
-    if (elemType == llvm::Type::VoidTy)
-        elemType = llvm::Type::Int8Ty;
+    if (elemType == llvm::Type::getVoidTy(llvm::getGlobalContext()))
+        elemType = llvm::Type::getInt8Ty(llvm::getGlobalContext());
     elemType = llvm::PointerType::get(elemType, 0);
 
     // create struct type
-    const llvm::Type* at = llvm::StructType::get(gIR->context(), DtoSize_t(), elemType, NULL);
+    const llvm::Type* at = llvm::StructType::get(llvm::getGlobalContext(), DtoSize_t(), elemType, NULL);
 
     // name dynamic array types
     Type::sir->getState()->module->addTypeName(t->toChars(), at);