[Mesa-dev] [Clover] Compilations error with latest LLVM version 4.0.0svn in llvm/codegen/bitcode.cpp

Vedran Miletić vedran at miletic.net
Mon Nov 14 11:09:43 UTC 2016


On 11/14/2016 04:40 AM, Dieter Nützel wrote:
> Hello Francisco,
> 
> next little change needed.
> 
> Thanks,
> Dieter
> 
> make[4]: Entering directory '/opt/mesa/src/gallium/state_trackers/clover'
>   CXX      llvm/codegen/libclllvm_la-bitcode.lo
> llvm/codegen/bitcode.cpp: In function 'std::unique_ptr<llvm::Module>
> clover::llvm::parse_module_library(const clover::module&,
> llvm::LLVMContext&, std::string&)':
> llvm/codegen/bitcode.cpp:102:50: error: 'class
> llvm::Expected<std::unique_ptr<llvm::Module> >' has no member named
> 'getError'
>        fail(r_log, error(CL_INVALID_PROGRAM), mod.getError().message());
>                                                   ^
> In file included from ./llvm/metadata.hpp:31:0,
>                  from llvm/codegen/bitcode.cpp:35:
> ./llvm/compat.hpp: At global scope:
> ./llvm/compat.hpp:157:21: warning:
> 'clover::llvm::compat::default_reloc_model' defined but not used
> [-Wunused-variable]
>           const auto default_reloc_model = ::llvm::None;
>                      ^
> Makefile:900: recipe for target 'llvm/codegen/libclllvm_la-bitcode.lo'
> failed
> make[4]: *** [llvm/codegen/libclllvm_la-bitcode.lo] Error 1

Hi Dieter,

potential patch, compiles but untested otherwise:

diff --git a/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp
b/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp
index 8e89a49..5dcc4f8 100644
--- a/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp
+++ b/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp
@@ -98,8 +98,14 @@ clover::llvm::parse_module_library(const module &m,
::llvm::LLVMContext &ctx,
                                    std::string &r_log) {
    auto mod = ::llvm::parseBitcodeFile(::llvm::MemoryBufferRef(
                                         as_string(m.secs[0].data), "
"), ctx);
-   if (!mod)
-      fail(r_log, error(CL_INVALID_PROGRAM), mod.getError().message());
+
+   if (::llvm::Error err = mod.takeError()) {
+      std::string msg;
+      ::llvm::handleAllErrors(std::move(err), [&](::llvm::ErrorInfoBase
&EIB) {
+         msg = EIB.message();
+         fail(r_log, error(CL_INVALID_PROGRAM), msg.c_str());
+      });
+   }

    return std::unique_ptr<::llvm::Module>(std::move(*mod));
 }

Regards,
Vedran

-- 
Vedran Miletić
vedran.miletic.net


More information about the mesa-dev mailing list