changeset 632:df196c8dea26

Updated to latest LLVM trunk, function notes have been removed and merged with parameter attributes, which have been renamed to just attributes. Nothing seems to have broke!
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 01 Oct 2008 23:17:14 +0200
parents 607b6b5819a7
children d208fc4291df
files gen/arrays.cpp gen/dwarftypes.cpp gen/functions.cpp gen/irstate.h gen/llvm.h gen/llvmhelpers.cpp gen/llvmhelpers.h gen/runtime.cpp gen/statements.cpp gen/tocall.cpp gen/tollvm.cpp ir/irfunction.cpp
diffstat 12 files changed, 119 insertions(+), 134 deletions(-) [+]
line wrap: on
line diff
--- a/gen/arrays.cpp	Wed Oct 01 20:55:13 2008 +0200
+++ b/gen/arrays.cpp	Wed Oct 01 23:17:14 2008 +0200
@@ -758,10 +758,10 @@
     CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end(), "tmp");
 
     // set param attrs
-    llvm::PAListPtr palist;
-    palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
-    palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-    call->setParamAttrs(palist);
+    llvm::AttrListPtr palist;
+    palist = palist.addAttr(1, llvm::Attribute::ByVal);
+    palist = palist.addAttr(2, llvm::Attribute::ByVal);
+    call->setAttributes(palist);
 
     return call->get();
 }
@@ -1072,7 +1072,7 @@
     gIR->scope() = IRScope(failbb, okbb);
 
     std::vector<LLValue*> args;
-    llvm::PAListPtr palist;
+    llvm::AttrListPtr palist;
 
     // file param
     // FIXME: every array bounds check creates a global for the filename !!!
@@ -1090,7 +1090,7 @@
     DtoStore(c->getOperand(1), ptr);
 
     args.push_back(alloc);
-    palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
+    palist = palist.addAttr(1, llvm::Attribute::ByVal);
 
     // line param
     c = DtoConstUint(loc.linnum);
@@ -1099,7 +1099,7 @@
     // call
     llvm::Function* errorfn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_array_bounds");
     CallOrInvoke* call = gIR->CreateCallOrInvoke(errorfn, args.begin(), args.end());
-    call->setParamAttrs(palist);
+    call->setAttributes(palist);
 
     // the function does not return
     gIR->ir->CreateUnreachable();
--- a/gen/dwarftypes.cpp	Wed Oct 01 20:55:13 2008 +0200
+++ b/gen/dwarftypes.cpp	Wed Oct 01 23:17:14 2008 +0200
@@ -9,7 +9,7 @@
 #include <llvm/BasicBlock.h>
 #include <llvm/Instructions.h>
 #include <llvm/InlineAsm.h>
-#include <llvm/ParameterAttributes.h>
+#include <llvm/Attributes.h>
 #include <llvm/Support/MathExtras.h>
 #include <llvm/Pass.h>
 #include <llvm/PassManager.h>
--- a/gen/functions.cpp	Wed Oct 01 20:55:13 2008 +0200
+++ b/gen/functions.cpp	Wed Oct 01 23:17:14 2008 +0200
@@ -132,7 +132,7 @@
             Logger::println("struct param");
             paramvec.push_back(getPtrToType(at));
             if (!refOrOut)
-                arg->llvmAttrs |= llvm::ParamAttr::ByVal;
+                arg->llvmAttrs |= llvm::Attribute::ByVal;
         }
         else if (isaArray(at)) {
             // static array are passed by reference
@@ -341,10 +341,10 @@
         llidx += 2;
 
     int funcNumArgs = func->getArgumentList().size();
-    std::vector<llvm::ParamAttrsWithIndex> attrs;
+    std::vector<llvm::AttributeWithIndex> attrs;
     int k = 0;
 
-    llvm::ParamAttrsWithIndex PAWI;
+    llvm::AttributeWithIndex PAWI;
 
     // set return value attrs if any
     if (f->retAttrs)
@@ -358,7 +358,7 @@
     if (f->retInPtr)
     {
         PAWI.Index = 1;
-        PAWI.Attrs = llvm::ParamAttr::StructRet;
+        PAWI.Attrs = llvm::Attribute::StructRet;
         attrs.push_back(PAWI);
     }
 
@@ -366,7 +366,7 @@
     if (fdecl->isMain() && Argument::dim(f->parameters) == 0)
     {
         PAWI.Index = llidx;
-        PAWI.Attrs = llvm::ParamAttr::ByVal;
+        PAWI.Attrs = llvm::Attribute::ByVal;
         attrs.push_back(PAWI);
         llidx++;
     }
@@ -384,8 +384,8 @@
             attrs.push_back(PAWI);
     }
 
-    llvm::PAListPtr palist = llvm::PAListPtr::get(attrs.begin(), attrs.end());
-    func->setParamAttrs(palist);
+    llvm::AttrListPtr palist = llvm::AttrListPtr::get(attrs.begin(), attrs.end());
+    func->setAttributes(palist);
 }
 
 //////////////////////////////////////////////////////////////////////////////////////////
--- a/gen/irstate.h	Wed Oct 01 20:55:13 2008 +0200
+++ b/gen/irstate.h	Wed Oct 01 23:17:14 2008 +0200
@@ -88,7 +88,7 @@
 // adjusting these common properties these structs are made
 struct CallOrInvoke
 {
-    virtual void setParamAttrs(const llvm::PAListPtr& Attrs) = 0;
+    virtual void setAttributes(const llvm::AttrListPtr& Attrs) = 0;
     virtual void setCallingConv(unsigned CC) = 0;
     virtual llvm::Instruction* get() = 0;
 };
@@ -98,8 +98,8 @@
     llvm::CallInst* inst;
     CallOrInvoke_Call(llvm::CallInst* call) : inst(call) {}
 
-    virtual void setParamAttrs(const llvm::PAListPtr& Attrs)
-    { inst->setParamAttrs(Attrs); }
+    virtual void setAttributes(const llvm::AttrListPtr& Attrs)
+    { inst->setAttributes(Attrs); }
     virtual void setCallingConv(unsigned CC)
     { inst->setCallingConv(CC); }
     virtual llvm::Instruction* get()
@@ -111,8 +111,8 @@
     llvm::InvokeInst* inst;
     CallOrInvoke_Invoke(llvm::InvokeInst* invoke) : inst(invoke) {}
 
-    virtual void setParamAttrs(const llvm::PAListPtr& Attrs)
-    { inst->setParamAttrs(Attrs); }
+    virtual void setAttributes(const llvm::AttrListPtr& Attrs)
+    { inst->setAttributes(Attrs); }
     virtual void setCallingConv(unsigned CC)
     { inst->setCallingConv(CC); }
     virtual llvm::Instruction* get()
--- a/gen/llvm.h	Wed Oct 01 20:55:13 2008 +0200
+++ b/gen/llvm.h	Wed Oct 01 23:17:14 2008 +0200
@@ -10,7 +10,7 @@
 #include "llvm/Function.h"
 #include "llvm/Module.h"
 #include "llvm/Value.h"
-#include "llvm/ParameterAttributes.h"
+#include "llvm/Attributes.h"
 
 #include "llvm/Target/TargetData.h"
 
--- a/gen/llvmhelpers.cpp	Wed Oct 01 20:55:13 2008 +0200
+++ b/gen/llvmhelpers.cpp	Wed Oct 01 23:17:14 2008 +0200
@@ -117,7 +117,7 @@
     llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, fname);
 
     // param attrs
-    llvm::PAListPtr palist;
+    llvm::AttrListPtr palist;
     int idx = 1;
 
     // FIXME: every assert creates a global for the filename !!!
@@ -141,7 +141,7 @@
         {
             args.push_back(msg->getRVal());
         }
-        palist = palist.addAttr(idx++, llvm::ParamAttr::ByVal);
+        palist = palist.addAttr(idx++, llvm::Attribute::ByVal);
     }
 
     // file param
@@ -157,7 +157,7 @@
     DtoStore(c->getOperand(1), ptr);
 
     args.push_back(alloc);
-    palist = palist.addAttr(idx++, llvm::ParamAttr::ByVal);
+    palist = palist.addAttr(idx++, llvm::Attribute::ByVal);
 
 
     // line param
@@ -166,7 +166,7 @@
 
     // call
     CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end());
-    call->setParamAttrs(palist);
+    call->setAttributes(palist);
 
     // after assert is always unreachable
     gIR->ir->CreateUnreachable();
--- a/gen/llvmhelpers.h	Wed Oct 01 20:55:13 2008 +0200
+++ b/gen/llvmhelpers.h	Wed Oct 01 23:17:14 2008 +0200
@@ -133,7 +133,7 @@
 const LLFunctionType* DtoExtractFunctionType(const LLType* type);
 
 ///
-void DtoBuildDVarArgList(std::vector<LLValue*>& args, llvm::PAListPtr& palist, TypeFunction* tf, Expressions* arguments, size_t argidx);
+void DtoBuildDVarArgList(std::vector<LLValue*>& args, llvm::AttrListPtr& palist, TypeFunction* tf, Expressions* arguments, size_t argidx);
 
 ///
 DValue* DtoCallFunction(Loc& loc, Type* resulttype, DValue* fnval, Expressions* arguments);
--- a/gen/runtime.cpp	Wed Oct 01 20:55:13 2008 +0200
+++ b/gen/runtime.cpp	Wed Oct 01 23:17:14 2008 +0200
@@ -69,7 +69,7 @@
 
     const llvm::FunctionType* fnty = fn->getFunctionType();
     llvm::Function* resfn = llvm::cast<llvm::Function>(target->getOrInsertFunction(name, fnty));
-    resfn->setParamAttrs(fn->getParamAttrs());
+    resfn->setAttributes(fn->getAttributes());
     return resfn;
 }
 
@@ -201,11 +201,11 @@
         types.push_back(stringTy);
         types.push_back(intTy);
         const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(1, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M)->setAttributes(palist);
     }
 
     // void _d_assert_msg( char[] msg, char[] file, uint line )
@@ -216,10 +216,10 @@
         types.push_back(stringTy);
         types.push_back(intTy);
         const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(1, llvm::Attribute::ByVal);
+        palist = palist.addAttr(2, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
     }
 
     /////////////////////////////////////////////////////////////////////////////////////
@@ -383,11 +383,11 @@
         types.push_back(TY); \
         types.push_back(rt_dg1()); \
         const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
-        llvm::PAListPtr palist; \
-        palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \
+        llvm::AttrListPtr palist; \
+        palist = palist.addAttr(1, llvm::Attribute::ByVal); \
+        palist = palist.addAttr(2, llvm::Attribute::ByVal); \
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
     }
     STR_APPLY1(stringTy, "_aApplycw1", "_aApplycd1")
     STR_APPLY1(wstringTy, "_aApplywc1", "_aApplywd1")
@@ -403,11 +403,11 @@
         types.push_back(TY); \
         types.push_back(rt_dg2()); \
         const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
-        llvm::PAListPtr palist; \
-        palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \
+        llvm::AttrListPtr palist; \
+        palist = palist.addAttr(1, llvm::Attribute::ByVal); \
+        palist = palist.addAttr(2, llvm::Attribute::ByVal); \
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
     }
     STR_APPLY2(stringTy, "_aApplycw2", "_aApplycd2")
     STR_APPLY2(wstringTy, "_aApplywc2", "_aApplywd2")
@@ -422,11 +422,11 @@
         types.push_back(TY); \
         types.push_back(rt_dg1()); \
         const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
-        llvm::PAListPtr palist; \
-        palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \
+        llvm::AttrListPtr palist; \
+        palist = palist.addAttr(1, llvm::Attribute::ByVal); \
+        palist = palist.addAttr(2, llvm::Attribute::ByVal); \
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
     }
     STR_APPLY_R1(stringTy, "_aApplyRcw1", "_aApplyRcd1")
     STR_APPLY_R1(wstringTy, "_aApplyRwc1", "_aApplyRwd1")
@@ -441,11 +441,11 @@
         types.push_back(TY); \
         types.push_back(rt_dg2()); \
         const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
-        llvm::PAListPtr palist; \
-        palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \
+        llvm::AttrListPtr palist; \
+        palist = palist.addAttr(1, llvm::Attribute::ByVal); \
+        palist = palist.addAttr(2, llvm::Attribute::ByVal); \
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
     }
     STR_APPLY_R2(stringTy, "_aApplyRcw2", "_aApplyRcd2")
     STR_APPLY_R2(wstringTy, "_aApplyRwc2", "_aApplyRwd2")
@@ -533,10 +533,10 @@
         types.push_back(stringTy);
         types.push_back(stringTy);
         const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(2, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
     }
 
     // wchar[] _adReverseWchar(wchar[] a)
@@ -548,10 +548,10 @@
         types.push_back(wstringTy);
         types.push_back(wstringTy);
         const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(2, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
     }
 
     // Array _adReverse(Array a, size_t szelem)
@@ -562,9 +562,9 @@
         types.push_back(rt_array(byteTy));
         types.push_back(sizeTy);
         const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(2, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
     }
 
     // Array _adDupT(TypeInfo ti, Array a)
@@ -575,9 +575,9 @@
         types.push_back(typeInfoTy);
         types.push_back(rt_array(byteTy));
         const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(3, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(3, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
     }
 
     // int _adEq(Array a1, Array a2, TypeInfo ti)
@@ -590,11 +590,11 @@
         types.push_back(rt_array(byteTy));
         types.push_back(typeInfoTy);
         const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(1, llvm::Attribute::ByVal);
+        palist = palist.addAttr(2, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
     }
 
     // int _adCmpChar(Array a1, Array a2)
@@ -604,10 +604,10 @@
         types.push_back(rt_array(byteTy));
         types.push_back(rt_array(byteTy));
         const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(1, llvm::Attribute::ByVal);
+        palist = palist.addAttr(2, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
     }
 
     // Array _adSort(Array a, TypeInfo ti)
@@ -618,9 +618,9 @@
         types.push_back(rt_array(byteTy));
         types.push_back(typeInfoTy);
         const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(2, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
     }
 
     /////////////////////////////////////////////////////////////////////////////////////
@@ -723,9 +723,9 @@
         types.push_back(sizeTy);
         types.push_back(rt_dg1());
         const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(3, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(3, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
     }
 
     // int _aaApply2(AA aa, size_t keysize, dg2_t dg)
@@ -736,9 +736,9 @@
         types.push_back(sizeTy);
         types.push_back(rt_dg1());
         const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(3, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(3, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
     }
 
     /////////////////////////////////////////////////////////////////////////////////////
@@ -813,10 +813,10 @@
         types.push_back(rt_array(rt_array2(byteTy)));
         types.push_back(stringTy);
         const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(1, llvm::Attribute::ByVal);
+        palist = palist.addAttr(2, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
     }
 
     // int _d_switch_ustring(wchar[][] table, wchar[] ca)
@@ -826,10 +826,10 @@
         types.push_back(rt_array(rt_array2(shortTy)));
         types.push_back(wstringTy);
         const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(1, llvm::Attribute::ByVal);
+        palist = palist.addAttr(2, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
     }
 
     // int _d_switch_dstring(dchar[][] table, dchar[] ca)
@@ -839,10 +839,10 @@
         types.push_back(rt_array(rt_array2(intTy)));
         types.push_back(dstringTy);
         const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
-        llvm::PAListPtr palist;
-        palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
-        palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
+        llvm::AttrListPtr palist;
+        palist = palist.addAttr(1, llvm::Attribute::ByVal);
+        palist = palist.addAttr(2, llvm::Attribute::ByVal);
+        llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
     }
 
     /////////////////////////////////////////////////////////////////////////////////////
--- a/gen/statements.cpp	Wed Oct 01 20:55:13 2008 +0200
+++ b/gen/statements.cpp	Wed Oct 01 23:17:14 2008 +0200
@@ -705,10 +705,10 @@
 
     CallOrInvoke* call = gIR->CreateCallOrInvoke2(fn, table, llval, "tmp");
 
-    llvm::PAListPtr palist;
-    palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
-    palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
-    call->setParamAttrs(palist);
+    llvm::AttrListPtr palist;
+    palist = palist.addAttr(1, llvm::Attribute::ByVal);
+    palist = palist.addAttr(2, llvm::Attribute::ByVal);
+    call->setAttributes(palist);
 
     return call->get();
 }
@@ -1255,7 +1255,7 @@
     llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_switch_error");
 
     // param attrs
-    llvm::PAListPtr palist;
+    llvm::AttrListPtr palist;
     int idx = 1;
 
     std::vector<LLValue*> args;
@@ -1276,7 +1276,7 @@
     DtoStore(c->getOperand(1), ptr);
 
     args.push_back(alloc);
-    palist = palist.addAttr(idx++, llvm::ParamAttr::ByVal);
+    palist = palist.addAttr(idx++, llvm::Attribute::ByVal);
 
     // line param
     c = DtoConstUint(loc.linnum);
@@ -1284,7 +1284,7 @@
 
     // call
     CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end());
-    call->setParamAttrs(palist);
+    call->setAttributes(palist);
 
     gIR->ir->CreateUnreachable();
 }
--- a/gen/tocall.cpp	Wed Oct 01 20:55:13 2008 +0200
+++ b/gen/tocall.cpp	Wed Oct 01 23:17:14 2008 +0200
@@ -104,7 +104,7 @@
 
 //////////////////////////////////////////////////////////////////////////////////////////
 
-void DtoBuildDVarArgList(std::vector<LLValue*>& args, llvm::PAListPtr& palist, TypeFunction* tf, Expressions* arguments, size_t argidx)
+void DtoBuildDVarArgList(std::vector<LLValue*>& args, llvm::AttrListPtr& palist, TypeFunction* tf, Expressions* arguments, size_t argidx)
 {
     Logger::println("doing d-style variadic arguments");
 
@@ -235,7 +235,7 @@
     LLFunctionType::param_iterator argiter = argbegin;
 
     // parameter attributes
-    llvm::PAListPtr palist;
+    llvm::AttrListPtr palist;
 
     // return attrs
     if (tf->retAttrs)
@@ -250,7 +250,7 @@
         LLValue* retvar = DtoAlloca(argiter->get()->getContainedType(0), ".rettmp");
         ++argiter;
         args.push_back(retvar);
-        palist = palist.addAttr(1, llvm::ParamAttr::StructRet);
+        palist = palist.addAttr(1, llvm::Attribute::StructRet);
     }
 
     // then comes a context argument...
@@ -364,26 +364,13 @@
     {
         LLFunction* llfunc = llvm::dyn_cast<LLFunction>(dfnval->val);
         if (llfunc && llfunc->isIntrinsic())
-            palist = llvm::Intrinsic::getParamAttrs((llvm::Intrinsic::ID)llfunc->getIntrinsicID());
+            palist = llvm::Intrinsic::getAttributes((llvm::Intrinsic::ID)llfunc->getIntrinsicID());
         else
             call->setCallingConv(callconv);
     }
     else
         call->setCallingConv(callconv);
-    call->setParamAttrs(palist);
+    call->setAttributes(palist);
 
     return new DImValue(resulttype, retllval);
 }
-
-
-
-
-
-
-
-
-
-
-
-
-
--- a/gen/tollvm.cpp	Wed Oct 01 20:55:13 2008 +0200
+++ b/gen/tollvm.cpp	Wed Oct 01 23:17:14 2008 +0200
@@ -44,14 +44,14 @@
         {
         case Tint8:
         case Tint16:
-            return llvm::ParamAttr::SExt;
+            return llvm::Attribute::SExt;
 
         case Tuns8:
         case Tuns16:
-            return llvm::ParamAttr::ZExt;
+            return llvm::Attribute::ZExt;
         }
     }
-    return llvm::ParamAttr::None;
+    return llvm::Attribute::None;
 }
 
 const LLType* DtoType(Type* t)
--- a/ir/irfunction.cpp	Wed Oct 01 20:55:13 2008 +0200
+++ b/ir/irfunction.cpp	Wed Oct 01 23:17:14 2008 +0200
@@ -66,14 +66,12 @@
 
 void IrFunction::setNeverInline()
 {
-    llvm::FunctionNotes cur = func->getNotes();
-    assert(!(cur & llvm::FN_NOTE_AlwaysInline) && "function can't be never- and always-inline at the same time");
-    func->setNotes(cur | llvm::FN_NOTE_NoInline);
+    assert(!func->hasFnAttr(llvm::Attribute::AlwaysInline) && "function can't be never- and always-inline at the same time");
+    func->addFnAttr(llvm::Attribute::NoInline);
 }
 
 void IrFunction::setAlwaysInline()
 {
-    llvm::FunctionNotes cur = func->getNotes();
-    assert(!(cur & llvm::FN_NOTE_NoInline) && "function can't be never- and always-inline at the same time");
-    func->setNotes(cur | llvm::FN_NOTE_AlwaysInline);
+    assert(!func->hasFnAttr(llvm::Attribute::NoInline) && "function can't be never- and always-inline at the same time");
+    func->addFnAttr(llvm::Attribute::AlwaysInline);
 }