bscarlet / llvm-general

Rich LLVM bindings for Haskell (with transfer of LLVM IR to and from C++, detailed compilation pass control, etc.)
http://hackage.haskell.org/package/llvm-general
132 stars 38 forks source link

Master branch fails to compile with llvm 3.6.1 #142

Open taruti opened 9 years ago

taruti commented 9 years ago
/usr/bin/ghc -c -fPIC -odir dist/build -Idist/build/autogen -Idist/build -Isrc -I/usr/include -optc-O2 '-optc-std=c++11' -optc-I/usr/include/llvm -optc-DNDEBUG -optc-D_GNU_SOURCE -optc-D__STDC_CONSTANT_MACROS -optc-D__STDC_FORMAT_MACROS -package-db dist/package.conf.inplace -package-id array-0.5.1.0-e29cdbe82692341ebb7ce6e2798294f9 -package-id base-4.8.0.0-1b689eb8d72c4d4cc88f445839c1f01a -package-id bytestring-0.10.6.0-0909f8f31271f3d75749190bf2ee35db -package-id containers-0.5.6.2-2114032c163425cc264e6e1169dc2f6d -package-id llvm-general-pure-3.6.0.0-be3fdde891e2df43dfc31f85af87fb61 -package-id mtl-2.2.1-469d439d6bbf91b7298a50a3c97e386a -package-id parsec-3.1.9-377c9ed3b4617d819f1af87e16ba762e -package-id setenv-0.1.1.3-d5171e3fb45072ab5c000f34d31b821d -package-id template-haskell-2.10.0.0-e895139a0ffff267d412e3d0191ce93b -package-id transformers-0.4.2.0-c1a7bb855a176fe475d7b665301cd48f -package-id transformers-compat-0.4.0.4-0ef0c82e02fc5f1fa77c665b35287eb2 -package-id utf8-string-1-aec376b96b4ef1b53c504be7686bb71c src/LLVM/General/Internal/FFI/InstructionC.cpp

In file included from src/LLVM/General/Internal/FFI/InstructionC.cpp:6:0:

/usr/include/llvm/IR/Operator.h: In function ‘unsigned int LLVM_General_GetMetadata(LLVMValueRef, unsigned int*, LLVMOpaqueValue**, unsigned int)’:

/usr/include/llvm/IR/Operator.h:169:3:
     error: ‘llvm::FastMathFlags::FastMathFlags(unsigned int)’ is private
       FastMathFlags(unsigned F) : Flags(F) { }
       ^

src/LLVM/General/Internal/FFI/InstructionC.cpp:252:33:
     error: within this context
        nodes[i] = wrap(mds[i].second);
                                     ^

src/LLVM/General/Internal/FFI/InstructionC.cpp:252:27:
     error: invalid conversion from ‘llvm::MDNode*’ to ‘unsigned int’ [-fpermissive]
        nodes[i] = wrap(mds[i].second);
                               ^

In file included from src/LLVM/General/Internal/FFI/InstructionC.cpp:6:0:

/usr/include/llvm/IR/Operator.h:169:3:
     note:   initializing argument 1 of ‘llvm::FastMathFlags::FastMathFlags(unsigned int)’
       FastMathFlags(unsigned F) : Flags(F) { }
       ^

src/LLVM/General/Internal/FFI/InstructionC.cpp:252:13:
     error: cannot convert ‘LLVMFastMathFlags’ to ‘LLVMValueRef {aka LLVMOpaqueValue*}’ in assignment
        nodes[i] = wrap(mds[i].second);
                 ^
Failed to install llvm-general-3.6.0.0
cabal: Error: some packages failed to install:
llvm-general-3.6.0.0 failed during the building phase. The exception was:
ExitFailure 1

LLVM 3.6.1., GCC 5.1.0, GHC 7.10.1.

bscarlet commented 9 years ago

Yep. I regret I'm behind on keeping up with llvm releases. The master branch is only up partway to 3.5.

cocreature commented 8 years ago

Since we now have llvm-3.8 support in the llvm-3.8 branch this can be closed if you’re fine with simply skipping 3.6 and 3.7

bscarlet commented 8 years ago

I'll leave it open, since we may need to backport to 3.6 and 3.7 at some point. It seems to be fairly common for one tool or another to lag the latest available LLVM version, so people using those tools may need such a backport.