[llvm] a1fc260 - [JITLink] Add a synchronous version of finalize for convenience.

Lang Hames via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 13 11:20:51 PDT 2020


Hi Arthur,

I'm working on a fix now. It should be in shortly.

Regards,
Lang.

On Mon, Jul 13, 2020 at 11:19 AM Arthur Eubanks <aeubanks at google.com> wrote:

> This breaks Windows builds with:
>
> [983/2358] Building CXX object
> lib\ExecutionEngine\JITLink\CMakeFiles\LLVMJITLink.dir\JITLinkMemoryManager.cpp.obj
> FAILED:
> lib/ExecutionEngine/JITLink/CMakeFiles/LLVMJITLink.dir/JITLinkMemoryManager.cpp.obj
> C:\src\chromium\src\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe
>  /nologo -TP -DGTEST_HAS_RTTI=0 -DUNICODE -D_CRT_NONSTDC_NO_DEPRECATE
> -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE
> -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_SCL_SECURE_NO_DEPRECATE
> -D_SCL_SECURE_NO_WARNINGS -D_UNICODE -D__STDC_CONSTANT_MACROS
> -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib\ExecutionEngine\JITLink
> -IC:\src\llvm-project\llvm\lib\ExecutionEngine\JITLink -Iinclude
> -IC:\src\llvm-project\llvm\include /DWIN32 /D_WINDOWS   /Zc:inline
> /Zc:strictStrings /Oi /Zc:rvalueCast /Brepro /W4  -Wextra
> -Wno-unused-parameter -Wwrite-strings -Wcast-qual
> -Wmissing-field-initializers -Wimplicit-fallthrough
> -Wcovered-switch-default -Wno-noexcept-type -Wdelete-non-virtual-dtor
> -Wstring-conversion /MDd /Zi /Ob0 /Od /RTC1    /EHs-c- /GR- -std:c++14
> /showIncludes
> /Folib\ExecutionEngine\JITLink\CMakeFiles\LLVMJITLink.dir\JITLinkMemoryManager.cpp.obj
> /Fdlib\ExecutionEngine\JITLink\CMakeFiles\LLVMJITLink.dir\LLVMJITLink.pdb
> -c
> C:\src\llvm-project\llvm\lib\ExecutionEngine\JITLink\JITLinkMemoryManager.cpp
> In file included from
> C:\src\llvm-project\llvm\lib\ExecutionEngine\JITLink\JITLinkMemoryManager.cpp:10:
> In file included from
> C:\src\llvm-project\llvm\include\llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h:22:
> C:/PROGRA~2/MICROS~1/2017/PROFES~1/VC/Tools/MSVC/14.16.27023/include\future(217,2):
> error: field of type 'llvm::Error' has protected default constructor
>         _Associated_state(_Mydel *_Dp = nullptr)
>         ^
> C:/PROGRA~2/MICROS~1/2017/PROFES~1/VC/Tools/MSVC/14.16.27023/include\future(1399,20):
> note: in instantiation of member function
> 'std::_Associated_state<llvm::Error>::_Associated_state' requested here
>                 : _MyPromise(new _Associated_state<_Ty>)
>                                  ^
> C:\src\llvm-project\llvm\include\llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h(81,27):
> note: in instantiation of member function
> 'std::promise<llvm::Error>::promise' requested here
>       std::promise<Error> FinalizeResultP;
>                           ^
> C:\src\llvm-project\llvm\include\llvm/Support/Error.h(176,3): note:
> declared protected here
>   Error() {
>   ^
> 1 error generated.
>
>
> And reverting fixes the issue.
>
> On Mon, Jul 13, 2020 at 10:15 AM Lang Hames via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>>
>> Author: Lang Hames
>> Date: 2020-07-13T10:15:10-07:00
>> New Revision: a1fc26030a42e9639e678344a4c08014a8cbba3d
>>
>> URL:
>> https://github.com/llvm/llvm-project/commit/a1fc26030a42e9639e678344a4c08014a8cbba3d
>> DIFF:
>> https://github.com/llvm/llvm-project/commit/a1fc26030a42e9639e678344a4c08014a8cbba3d.diff
>>
>> LOG: [JITLink] Add a synchronous version of finalize for convenience.
>>
>> This will be used by upcoming patches that implement indirection utils
>> (reentry, reentry trampolines, and stubs) on top of
>> JITLinkMemoryManager to unify in-process and cross-process lazy
>> compilation support.
>>
>> Added:
>>
>>
>> Modified:
>>     llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h
>>
>> Removed:
>>
>>
>>
>>
>> ################################################################################
>> diff  --git
>> a/llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h
>> b/llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h
>> index ac5a593bb77b..3bb56f4d9615 100644
>> --- a/llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h
>> +++ b/llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h
>> @@ -17,7 +17,9 @@
>>  #include "llvm/ExecutionEngine/JITSymbol.h"
>>  #include "llvm/Support/Error.h"
>>  #include "llvm/Support/Memory.h"
>> +
>>  #include <cstdint>
>> +#include <future>
>>
>>  namespace llvm {
>>  namespace jitlink {
>> @@ -74,6 +76,15 @@ class JITLinkMemoryManager {
>>      /// working memory.
>>      virtual void finalizeAsync(FinalizeContinuation OnFinalize) = 0;
>>
>> +    /// Calls finalizeAsync and waits for completion.
>> +    Error finalize() {
>> +      std::promise<Error> FinalizeResultP;
>> +      auto FinalizeResultF = FinalizeResultP.get_future();
>> +      finalizeAsync(
>> +          [&](Error Err) { FinalizeResultP.set_value(std::move(Err)); });
>> +      return FinalizeResultF.get();
>> +    }
>> +
>>      /// Should deallocate target memory.
>>      virtual Error deallocate() = 0;
>>    };
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200713/ef76f81a/attachment.html>


More information about the llvm-commits mailing list