diff --git a/.travis.yml b/.travis.yml index 459ed010..5a57b8a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,10 @@ language: cpp install: # LLVM 3.2 - - sudo sudo sh -c "echo 'deb http://archive.ubuntu.com/ubuntu/ precise-proposed restricted main multiverse universe' >> /etc/apt/sources.list" + - sudo sh -c "echo 'deb http://archive.ubuntu.com/ubuntu/ precise-proposed restricted main multiverse universe' >> /etc/apt/sources.list" # LLVM 3.4 snapshots - - sudo sudo sh -c "echo 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise main' >> /etc/apt/sources.list" + - sudo sh -c "echo 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise main' >> /etc/apt/sources.list" - wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add - # Some random Launchpad PPA for LLVM 3.3, should consder replacing this with diff --git a/gen/functions.cpp b/gen/functions.cpp index b4a3d03b..be966a82 100644 --- a/gen/functions.cpp +++ b/gen/functions.cpp @@ -258,15 +258,15 @@ llvm::FunctionType* DtoFunctionType(Type* type, IrFuncTy &irFty, Type* thistype, lidx++; } - // Now we can modify irFty safely. - irFty = newIrFty; - // let the abi rewrite the types as necesary - abi->rewriteFunctionType(f, irFty); + abi->rewriteFunctionType(f, newIrFty); // Tell the ABI we're done with this function type abi->doneWithFunctionType(); + // Now we can modify irFty safely. + irFty = llvm_move(newIrFty); + // build the function type std::vector argtypes; argtypes.reserve(lidx); diff --git a/gen/llvmcompat.h b/gen/llvmcompat.h index 6435153b..f84e93dc 100644 --- a/gen/llvmcompat.h +++ b/gen/llvmcompat.h @@ -32,4 +32,8 @@ #define HAS_ATTRIBUTES(x) (x) #endif +#if LDC_LLVM_VER < 302 +#define llvm_move(value) (value) +#endif + #endif