mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-11 18:33:14 +01:00
Merge branch 'master' into merge-2.061-2
This commit is contained in:
@@ -70,18 +70,14 @@ LLStructType* DtoArrayType(Type* arrayTy)
|
||||
if (elemty == LLType::getVoidTy(gIR->context()))
|
||||
elemty = LLType::getInt8Ty(gIR->context());
|
||||
|
||||
llvm::SmallVector<LLType*, 2> elems;
|
||||
elems.push_back(DtoSize_t());
|
||||
elems.push_back(getPtrToType(elemty));
|
||||
return LLStructType::get(gIR->context(), llvm::makeArrayRef(elems));
|
||||
llvm::Type *elems[] = { DtoSize_t(), getPtrToType(elemty) };
|
||||
return llvm::StructType::get(gIR->context(), elems, false);
|
||||
}
|
||||
|
||||
LLStructType* DtoArrayType(LLType* t)
|
||||
{
|
||||
llvm::SmallVector<LLType*, 2> elems;
|
||||
elems.push_back(DtoSize_t());
|
||||
elems.push_back(getPtrToType(t));
|
||||
return LLStructType::get(gIR->context(), llvm::makeArrayRef(elems));
|
||||
llvm::Type *elems[] = { DtoSize_t(), getPtrToType(t) };
|
||||
return llvm::StructType::get(gIR->context(), elems, false);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -72,10 +72,8 @@ llvm::FunctionType* DtoFunctionType(Type* type, Type* thistype, Type* nesttype,
|
||||
else
|
||||
{
|
||||
Type* rt = f->next;
|
||||
#if LDC_LLVM_VER >= 303
|
||||
llvm::Attribute a;
|
||||
#elif LDC_LLVM_VER == 302
|
||||
llvm::Attributes a;
|
||||
#if LDC_LLVM_VER >= 302
|
||||
llvm::AttrBuilder attrBuilder;
|
||||
#else
|
||||
llvm::Attributes a = None;
|
||||
#endif
|
||||
@@ -121,8 +119,17 @@ llvm::FunctionType* DtoFunctionType(Type* type, Type* thistype, Type* nesttype,
|
||||
if (f->isref)
|
||||
t = t->pointerTo();
|
||||
#endif
|
||||
#if LDC_LLVM_VER >= 302
|
||||
attrBuilder.addAttribute(DtoShouldExtend(t));
|
||||
#else
|
||||
a = DtoShouldExtend(t);
|
||||
#endif
|
||||
}
|
||||
#if LDC_LLVM_VER >= 303
|
||||
llvm::Attribute a = llvm::Attribute::get(gIR->context(), attrBuilder);
|
||||
#elif LDC_LLVM_VER == 302
|
||||
llvm::Attributes a = llvm::Attributes::get(gIR->context(), attrBuilder);
|
||||
#endif
|
||||
#if DMDV2
|
||||
fty.ret = new IrFuncTyArg(rt, f->isref, a);
|
||||
#else
|
||||
@@ -202,10 +209,8 @@ llvm::FunctionType* DtoFunctionType(Type* type, Type* thistype, Type* nesttype,
|
||||
#endif
|
||||
|
||||
Type* argtype = arg->type;
|
||||
#if LDC_LLVM_VER >= 303
|
||||
llvm::Attribute a;
|
||||
#elif LDC_LLVM_VER == 302
|
||||
llvm::Attributes a;
|
||||
#if LDC_LLVM_VER >= 302
|
||||
llvm::AttrBuilder attrBuilder;
|
||||
#else
|
||||
llvm::Attributes a = None;
|
||||
#endif
|
||||
@@ -222,9 +227,9 @@ llvm::FunctionType* DtoFunctionType(Type* type, Type* thistype, Type* nesttype,
|
||||
else if (abi->passByVal(byref ? argtype->pointerTo() : argtype))
|
||||
{
|
||||
#if LDC_LLVM_VER >= 303
|
||||
if (!byref) a = llvm::Attribute::get(gIR->context(), llvm::AttrBuilder(a).addAttribute(llvm::Attribute::ByVal));
|
||||
if (!byref) attrBuilder.addAttribute(llvm::Attribute::ByVal);
|
||||
#elif LDC_LLVM_VER == 302
|
||||
if (!byref) a = llvm::Attributes::get(gIR->context(), llvm::AttrBuilder(a).addAttribute(llvm::Attributes::ByVal));
|
||||
if (!byref) attrBuilder.addAttribute(llvm::Attributes::ByVal);
|
||||
#else
|
||||
if (!byref) a |= llvm::Attribute::ByVal;
|
||||
#endif
|
||||
@@ -234,15 +239,17 @@ llvm::FunctionType* DtoFunctionType(Type* type, Type* thistype, Type* nesttype,
|
||||
// sext/zext
|
||||
else if (!byref)
|
||||
{
|
||||
#if LDC_LLVM_VER >= 303
|
||||
a = llvm::Attribute::get(gIR->context(), llvm::AttrBuilder(a).addAttributes(DtoShouldExtend(argtype)));
|
||||
#elif LDC_LLVM_VER == 302
|
||||
a = llvm::Attributes::get(gIR->context(), llvm::AttrBuilder(a).addAttributes(DtoShouldExtend(argtype)));
|
||||
#if LDC_LLVM_VER >= 302
|
||||
attrBuilder.addAttribute(DtoShouldExtend(argtype));
|
||||
#else
|
||||
a |= DtoShouldExtend(argtype);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if LDC_LLVM_VER >= 303
|
||||
llvm::Attribute a = llvm::Attribute::get(gIR->context(), attrBuilder);
|
||||
#elif LDC_LLVM_VER == 302
|
||||
llvm::Attributes a = llvm::Attributes::get(gIR->context(), attrBuilder);
|
||||
#endif
|
||||
fty.args.push_back(new IrFuncTyArg(argtype, byref, a));
|
||||
lidx++;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,9 @@ bool DtoIsPassedByRef(Type* type)
|
||||
}
|
||||
|
||||
#if LDC_LLVM_VER >= 303
|
||||
llvm::Attribute DtoShouldExtend(Type* type)
|
||||
llvm::Attribute::AttrKind DtoShouldExtend(Type* type)
|
||||
#elif LDC_LLVM_VER == 302
|
||||
llvm::Attributes::AttrVal DtoShouldExtend(Type* type)
|
||||
#else
|
||||
llvm::Attributes DtoShouldExtend(Type* type)
|
||||
#endif
|
||||
@@ -56,9 +58,9 @@ llvm::Attributes DtoShouldExtend(Type* type)
|
||||
case Tint8:
|
||||
case Tint16:
|
||||
#if LDC_LLVM_VER >= 303
|
||||
return llvm::Attribute::get(gIR->context(), llvm::AttrBuilder().addAttribute(llvm::Attribute::SExt));
|
||||
return llvm::Attribute::SExt;
|
||||
#elif LDC_LLVM_VER == 302
|
||||
return llvm::Attributes::get(gIR->context(), llvm::AttrBuilder().addAttribute(llvm::Attributes::SExt));
|
||||
return llvm::Attributes::SExt;
|
||||
#else
|
||||
return llvm::Attribute::SExt;
|
||||
#endif
|
||||
@@ -66,18 +68,18 @@ llvm::Attributes DtoShouldExtend(Type* type)
|
||||
case Tuns8:
|
||||
case Tuns16:
|
||||
#if LDC_LLVM_VER >= 303
|
||||
return llvm::Attribute::get(gIR->context(), llvm::AttrBuilder().addAttribute(llvm::Attribute::ZExt));
|
||||
return llvm::Attribute::ZExt;
|
||||
#elif LDC_LLVM_VER == 302
|
||||
return llvm::Attributes::get(gIR->context(), llvm::AttrBuilder().addAttribute(llvm::Attributes::ZExt));
|
||||
return llvm::Attributes::ZExt;
|
||||
#else
|
||||
return llvm::Attribute::ZExt;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#if LDC_LLVM_VER >= 303
|
||||
return llvm::Attribute();
|
||||
return llvm::Attribute::None;
|
||||
#elif LDC_LLVM_VER == 302
|
||||
return llvm::Attributes();
|
||||
return llvm::Attributes::None;
|
||||
#else
|
||||
return llvm::Attribute::None;
|
||||
#endif
|
||||
|
||||
@@ -35,7 +35,9 @@ bool DtoIsPassedByRef(Type* type);
|
||||
|
||||
// should argument be zero or sign extended
|
||||
#if LDC_LLVM_VER >= 303
|
||||
llvm::Attribute DtoShouldExtend(Type* type);
|
||||
llvm::Attribute::AttrKind DtoShouldExtend(Type* type);
|
||||
#elif LDC_LLVM_VER == 302
|
||||
llvm::Attributes::AttrVal DtoShouldExtend(Type* type);
|
||||
#else
|
||||
llvm::Attributes DtoShouldExtend(Type* type);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user