Summary: | mesa-12.0.1 with llvm-3.9.0_rc3 - src/gallium/state_trackers/clover/llvm/invocation.cpp:212:75: error: no matching function for call to clang::CompilerInvocation::setLangDefaults | ||
---|---|---|---|
Product: | Mesa | Reporter: | Dennis Schridde <devurandom> |
Component: | Other | Assignee: | mesa-dev |
Status: | RESOLVED WONTFIX | QA Contact: | mesa-dev |
Severity: | normal | ||
Priority: | medium | CC: | alexander, bastian.beischer, dex+fdobugzilla, libcg, vedran |
Version: | 12.0 | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
build.log (xz-compressed)
mesa-12.0.1-llvm-3.9.0_rc3-compatibility.patch |
Created attachment 126118 [details] [review] mesa-12.0.1-llvm-3.9.0_rc3-compatibility.patch Attached patch fixes the issue. Mesa releases can't support unreleased version of LLVM. That said, this problem is fixed in Mesa Git master, and LLVM 3.9 will be supported by the next major release of Mesa (12.1 or 13). (In reply to Michel Dänzer from comment #2) > Mesa releases can't support unreleased version of LLVM. As the code in the affected area is guarded with #if HAVE_LLVM >= 0x0309, I assumed Mesa developers were trying to do just that and my patch would be helpful in case you'd release a version 12.0.2. Thanks for your quick feedback! (In reply to Dennis Schridde from comment #3) > (In reply to Michel Dänzer from comment #2) > > Mesa releases can't support unreleased version of LLVM. > > As the code in the affected area is guarded with #if HAVE_LLVM >= 0x0309, I > assumed Mesa developers were trying to do just that and my patch would be > helpful in case you'd release a version 12.0.2. > > Thanks for your quick feedback! We could do that once LLVM 3.9 is out. Michel, thoughts? (In reply to Vedran Miletić from comment #4) > We could do that once LLVM 3.9 is out. Michel, thoughts? It would require backporting all changes from master which are needed for LLVM 3.9. If any of them are missed, there might be subtle issues. Personally, I think it's not worth bothering. The next major Mesa release shouldn't be too far away, and distros tend to take a while to build Mesa against new LLVM releases anyway. Well, I just wanted to bump llvm to the _released_ 3.9.0 and hit this bug when trying to recompile mesa 12.0.2. Perhaps it should be noted somewhere that mesa minor version releases only support the llvm release of the mayor they belong to. (In reply to Daniel Exner from comment #6) > Well, I just wanted to bump llvm to the _released_ 3.9.0 and hit this bug > when trying to recompile mesa 12.0.2. > > Perhaps it should be noted somewhere that mesa minor version releases only > support the llvm release of the mayor they belong to. Shouldn't ./configure check whether the installed version of LLVM is supported? That's what Rust does. (In reply to Dennis Schridde from comment #7) > Shouldn't ./configure check whether the installed version of LLVM is > supported? That's what Rust does. There are basically two options: 1) Fail explicitly on LLVM version that is not released, even if a certain snapshot of LLVM can work. 2) Allow using Mesa with a snapshot that happens to carry the same version number but different API. Mesa does 2) now, and I prefer it to 1). So Debian and Ubuntu would like to switch to llvm 3.9 which is why I'm reopening this. There's no word on 12.1 release schedule and it would be too late for Ubuntu 16.10 anyway, so backporting fixes to 12.0-branch would be needed. I added 82e0bbd01abfb20 and that fixed the build. Would be nice to know what else is needed to avoid "subtle issues". (In reply to Dennis Schridde from comment #1) > Created attachment 126118 [details] [review] [review] > mesa-12.0.1-llvm-3.9.0_rc3-compatibility.patch > > Attached patch fixes the issue. Using LLVM release_39 branch with Mesa 12.0 branch and the attached patch seems to work on Fiji. I have tested clinfo, glxinfo, GNOME Shell and Talos Principle. Hello, I built mesa 12.0.3 against llvm 3.9.0 on arch linux. Rocket League and Portal were working properly, however Tomb Raider was crashing right before the Feral logo. (In reply to Clément Guérin from comment #11) > Hello, I built mesa 12.0.3 against llvm 3.9.0 on arch linux. Rocket League > and Portal were working properly, however Tomb Raider was crashing right > before the Feral logo. Tomb Raider's crash is caused by the following error: "LLVM ERROR: branch size exceeds simm16" Reverting relevant LLVM commit [1] workarounds this issue, however running Tomb Raider at Ultra settings completely hangs the GPU. Other settings works fine. Another issue is the following warning which appear when running any GL app: "Warning: LLVM emitted unknown config register: 0x4" So yes, as Michel said, mesa-12.0 doesn't fully support llvm-3.9. [1] https://github.com/llvm-mirror/llvm/commit/76e32dfbc0acecb33e2141a0c2faf5b23e1342fc Same problem, different version: mesa-13.0.2 llvm: sys-devel/llvm-3.9.1 sys-devel/clang-3.9.1-r100 Error: libtool: compile: x86_64-pc-linux-gnu-g++ -m32 -DPACKAGE_NAME=\"Mesa\" -DPACKAGE_TARNAME=\"mesa\" -DPACKAGE_VERSION=\"13.0.2\" "-DPACKAGE_STRING=\"Mesa 13.0.2\"" "-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\"" -DPACKAGE_URL=\"\" -DPACKAGE=\"mesa\" -DVERSION=\"13.0.2\" -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DYYTEXT_POINTER=1 -DHAVE___BUILTIN_BSWAP32=1 -DHAVE___BUILTIN_BSWAP64=1 -DHAVE___BUILTIN_CLZ=1 -DHAVE___BUILTIN_CLZLL=1 -DHAVE___BUILTIN_CTZ=1 -DHAVE___BUILTIN_EXPECT=1 -DHAVE___BUILTIN_FFS=1 -DHAVE___BUILTIN_FFSLL=1 -DHAVE___BUILTIN_POPCOUNT=1 -DHAVE___BUILTIN_POPCOUNTLL=1 -DHAVE___BUILTIN_UNREACHABLE=1 -DHAVE_FUNC_ATTRIBUTE_CONST=1 -DHAVE_FUNC_ATTRIBUTE_FLATTEN=1 -DHAVE_FUNC_ATTRIBUTE_FORMAT=1 -DHAVE_FUNC_ATTRIBUTE_MALLOC=1 -DHAVE_FUNC_ATTRIBUTE_PACKED=1 -DHAVE_FUNC_ATTRIBUTE_PURE=1 -DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL=1 -DHAVE_FUNC_ATTRIBUTE_UNUSED=1 -DHAVE_FUNC_ATTRIBUTE_VISIBILITY=1 -DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT=1 -DHAVE_FUNC_ATTRIBUTE_WEAK=1 -DMAJOR_IN_SYSMACROS=1 -DHAVE_DLADDR=1 -DHAVE_CLOCK_GETTIME=1 -DHAVE_PTHREAD=1 -I. -I/var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover -I/var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/include -I/var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src -I/var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/include -I/var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/drivers -I/var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/auxiliary -I/var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/winsys -I../../../../src -I/var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover -std=c++11 -fvisibility=hidden -I/usr/include -std=c++11 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D_GNU_SOURCE -DUSE_SSE41 -DUSE_GCC_ATOMIC_BUILTINS -DNDEBUG -DTEXTURE_FLOAT_ENABLED -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -DHAVE_XLOCALE_H -DHAVE_SYS_SYSCTL_H -DHAVE_STRTOF -DHAVE_MKOSTEMP -DHAVE_DLOPEN -DHAVE_POSIX_MEMALIGN -DHAVE_LIBDRM -DHAVE_SHA1 -DGLX_USE_DRM -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DGLX_USE_TLS -DHAVE_ALIAS -DHAVE_DRI3 -DHAVE_MINCORE -DHAVE_LLVM=0x0309 -DMESA_LLVM_VERSION_PATCH=1 -DLIBCLC_INCLUDEDIR=\"/usr/include/\" -DLIBCLC_LIBEXECDIR=\"/usr/lib/clc/\" -DCLANG_RESOURCE_DIR=\"/usr/lib/clang/3.9.1\" -mtune=k8 -O2 -pipe -ffat-lto-objects -Wall -fno-math-errno -fno-trapping-math -c /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/invocation.cpp -fPIC -DPIC -o llvm/.libs/libclllvm_la-invocation.o In file included from /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/metadata.hpp:31:0, from /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp:35: /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/compat.hpp: In function 'void clover::llvm::compat::set_lang_defaults(clang::CompilerInvocation&, clang::LangOptions&, clang::InputKind, const llvm::Triple&, clang::PreprocessorOptions&, clang::LangStandard::Kind)': /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/compat.hpp:72:58: error: no matching function for call to 'clang::CompilerInvocation::setLangDefaults(clang::LangOptions&, clang::InputKind&, const llvm::Triple&, clang::PreprocessorOptions&, clang::LangStandard::Kind&)' inv.setLangDefaults(lopts, ik, t, ppopts, std); ^ In file included from /usr/local/include/clang/Frontend/CompilerInstance.h:17:0, from /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/codegen.hpp:37, from /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp:34: /usr/local/include/clang/Frontend/CompilerInvocation.h:157:15: note: candidate: static void clang::CompilerInvocation::setLangDefaults(clang::LangOptions&, clang::InputKind, clang::LangStandard::Kind) static void setLangDefaults(LangOptions &Opts, InputKind IK, ^ /usr/local/include/clang/Frontend/CompilerInvocation.h:157:15: note: candidate expects 3 arguments, 5 provided In file included from /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/metadata.hpp:31:0, from /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp:35: /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/compat.hpp: In function 'void clover::llvm::compat::add_link_bitcode_file(clang::CodeGenOptions&, const string&)': /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/compat.hpp:82:18: error: 'class clang::CodeGenOptions' has no member named 'LinkBitcodeFiles' opts.LinkBitcodeFiles.emplace_back(::llvm::Linker::Flags::None, path); ^ /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/compat.hpp:82:64: error: 'llvm::Linker::Flags' has not been declared opts.LinkBitcodeFiles.emplace_back(::llvm::Linker::Flags::None, path); ^ /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/compat.hpp: In function 'void clover::llvm::compat::add_internalize_pass(clover::llvm::compat::pass_manager&, const std::vector<std::__cxx11::basic_string<char> >&)': /var/tmp/portage/media-libs/mesa-13.0.2/work/mesa-13.0.2/src/gallium/state_trackers/clover/llvm/compat.hpp:109:24: error: no matching function for call to 'createInternalizePass(clover::llvm::compat::add_internalize_pass(clover::llvm::compat::pass_manager&, const std::vector<std::__cxx11::basic_string<char> >&)::<lambda(const llvm::GlobalValue&)>)' })); ^ (In reply to Christian from comment #13) > Same problem, different version: > mesa-13.0.2 > llvm: sys-devel/llvm-3.9.1 Actually, it looks like it picks up the headers from an older LLVM version for you. If you can't figure out why, ask for help on the mesa-dev mailing list, providing he corresponding config.log file. (In reply to Michel Dänzer from comment #14) > (In reply to Christian from comment #13) > > Same problem, different version: > > mesa-13.0.2 > > llvm: sys-devel/llvm-3.9.1 > > Actually, it looks like it picks up the headers from an older LLVM version > for you. If you can't figure out why, ask for help on the mesa-dev mailing > list, providing he corresponding config.log file. Yes, you nailed it actually, problem solved, thanks for your reply. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
Created attachment 126117 [details] build.log (xz-compressed) /var/tmp/portage/media-libs/mesa-12.0.1/work/mesa-12.0.1/src/gallium/state_trackers/clover/llvm/invocation.cpp: In function ‘llvm::Module* {anonymous}::compile_llvm(llvm::LLVMContext&, const string&, const header_map&, const string&, const string&, const string&, const string&, unsigned int (&)[7], unsigned int&, std::__cxx11::string&)’: /var/tmp/portage/media-libs/mesa-12.0.1/work/mesa-12.0.1/src/gallium/state_trackers/clover/llvm/invocation.cpp:212:75: error: no matching function for call to ‘clang::CompilerInvocation::setLangDefaults(clang::LangOptions&, clang::InputKind, llvm::Triple, clang::LangStandard::Kind)’ clang::LangStandard::lang_opencl11); ^ In file included from /usr/include/clang/Frontend/CompilerInstance.h:17:0, from /var/tmp/portage/media-libs/mesa-12.0.1/work/mesa-12.0.1/src/gallium/state_trackers/clover/llvm/invocation.cpp:25: /usr/include/clang/Frontend/CompilerInvocation.h:160:15: note: candidate: static void clang::CompilerInvocation::setLangDefaults(clang::LangOptions&, clang::InputKind, const llvm::Triple&, clang::PreprocessorOptions&, clang::LangStandard::Kind) static void setLangDefaults(LangOptions &Opts, InputKind IK, ^ /usr/include/clang/Frontend/CompilerInvocation.h:160:15: note: no known conversion for argument 4 from ‘clang::LangStandard::Kind’ to ‘clang::PreprocessorOptions&’