aguinet / dragonffi

C Foreign Function Interface and JIT using Clang/LLVM
Apache License 2.0
548 stars 23 forks source link

error: no member named 'ThreadModel' in 'clang::CodeGenOptions', on Aarch64 (LLVM 13) #64

Closed advancedwebdeveloper closed 3 years ago

advancedwebdeveloper commented 3 years ago

$ make -j32 [ 1%] Building CXX object CMakeFiles/dffi.dir/lib/dffi_llvm_wrapper.cpp.o [ 3%] Building CXX object CMakeFiles/dffi.dir/lib/dffi_impl_clang.cpp.o [ 4%] Building CXX object CMakeFiles/dffi.dir/lib/dffi_impl.cpp.o /home/oceanfish81/dragonffi/dragonffi/lib/dffi_llvm_wrapper.cpp:34:42: error: cannot initialize a parameter of type 'llvm::CloneFunctionChangeType' with an rvalue of type 'bool' llvm::CloneFunctionInto(NewF, F, VMap, true, Returns); ^~~~ /usr/local/include/llvm/Transforms/Utils/Cloning.h:159:73: note: passing argument to parameter 'Changes' here ValueToValueMapTy &VMap, CloneFunctionChangeType Changes, ^ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:94:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_PreserveAll: ^~~~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:91:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_PreserveMost: ^~~~~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:88:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_Swift: ^~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:85:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_OpenCLKernel: ^~~~~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:84:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_SpirFunction: ^~~~~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:81:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_X86RegCall: ^~~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:78:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_X86_64SysV: ^~~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:75:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_Win64: ^~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:72:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_IntelOclBicc: ^~~~~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:69:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_AAPCS_VFP: ^~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:66:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_AAPCS: ^~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:63:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_X86Pascal: ^~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:60:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_X86VectorCall: ^~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:57:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_X86ThisCall: ^~~~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:54:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_X86FastCall: ^~~~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:51:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_X86StdCall: ^~~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:42:8: warning: comparison of different enumeration types in switch statement ('clang::CallingConv' and 'dffi::CallingConv') [-Wenum-compare-switch] case CC_C: ^~~~ /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl_clang.cpp:41:11: warning: enumeration value 'CC_AArch64VectorCall' not handled in switch [-Wswitch] switch (Info.getCC()) { ^ /home/oceanfish81/dragonffi/dragonffi/lib/dffiimpl.cpp:183:21: error: no matching constructor for initialization of 'driver::Driver' Driver.reset(new driver::Driver{"dummy", TripleStr, *Diags_, Overlay}); ^ ~~~~~~~~~~ /usr/local/include/clang/Driver/Driver.h:310:3: note: candidate constructor not viable: no known conversion from 'IntrusiveRefCntPtr' to 'std::string' (aka 'basic_string') for 4th argument Driver(StringRef ClangExecutable, StringRef TargetTriple, ^ /usr/local/include/clang/Driver/Driver.h:59:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 4 were provided class Driver { ^ /usr/local/include/clang/Driver/Driver.h:59:7: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 4 were provided /home/oceanfish81/dragonffi/dragonffi/lib/dffi_impl.cpp:235:7: error: no member named 'ThreadModel' in 'clang::CodeGenOptions' CGO.ThreadModel = "posix";


1 error generated.
make[2]: *** [CMakeFiles/dffi.dir/build.make:80: CMakeFiles/dffi.dir/lib/dffi_llvm_wrapper.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
18 warnings generated.
2 errors generated.
make[2]: *** [CMakeFiles/dffi.dir/build.make:93: CMakeFiles/dffi.dir/lib/dffi_impl.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:235: CMakeFiles/dffi.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

$ uname -a
Linux ams1-c2-large-arm-01 5.4.0-40-generic
aguinet commented 3 years ago

DragonFFI is only compatible with LLVM 11.x.x .

advancedwebdeveloper commented 3 years ago

I thought this could be a PR for the issue