Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build failure on most Linux systems #77

Closed
targos opened this issue Sep 1, 2018 · 16 comments
Closed

Build failure on most Linux systems #77

targos opened this issue Sep 1, 2018 · 16 comments

Comments

@targos
Copy link
Member

targos commented Sep 1, 2018

There seems to be something in V8's code that GCC 6 can't handle.

@nodejs/v8-update

CI run: https://ci.nodejs.org/job/node-test-commit-node-v8/98/

Error output:

06:55:28 In file included from ../deps/v8/src/x64/assembler-x64-inl.h:12:0,
06:55:28                  from ../deps/v8/src/assembler-inl.h:13,
06:55:28                  from ../deps/v8/src/compiler/wasm-compiler.cc:9:
06:55:28 ../deps/v8/src/objects-inl.h: In function 'bool v8::internal::InstanceTypeChecker::IsName(v8::internal::InstanceType)':
06:55:28 ../deps/v8/src/objects-inl.h:95:26: warning: comparison is always true due to limited range of data type [-Wtype-limits]
06:55:28      return instance_type >= first_instance_type &&             \
06:55:28                           ^
06:55:28 ../deps/v8/src/objects.h:1061:3: note: in expansion of macro 'INSTANCE_TYPE_CHECKER_RANGE'
06:55:28    V(Name, FIRST_TYPE, LAST_NAME_TYPE)                               \
06:55:28    ^
06:55:28 ../deps/v8/src/objects-inl.h:98:1: note: in expansion of macro 'INSTANCE_TYPE_CHECKERS_RANGE'
06:55:28  INSTANCE_TYPE_CHECKERS_RANGE(INSTANCE_TYPE_CHECKER_RANGE);
06:55:28  ^
06:55:28 ../deps/v8/src/objects-inl.h: In function 'bool v8::internal::InstanceTypeChecker::IsString(v8::internal::InstanceType)':
06:55:28 ../deps/v8/src/objects-inl.h:95:26: warning: comparison is always true due to limited range of data type [-Wtype-limits]
06:55:28      return instance_type >= first_instance_type &&             \
06:55:28                           ^
06:55:28 ../deps/v8/src/objects.h:1062:3: note: in expansion of macro 'INSTANCE_TYPE_CHECKER_RANGE'
06:55:28    V(String, FIRST_TYPE, FIRST_NONSTRING_TYPE - 1)                   \
06:55:28    ^
06:55:28 ../deps/v8/src/objects-inl.h:98:1: note: in expansion of macro 'INSTANCE_TYPE_CHECKERS_RANGE'
06:55:28  INSTANCE_TYPE_CHECKERS_RANGE(INSTANCE_TYPE_CHECKER_RANGE);
06:55:28  ^
06:55:28 ../deps/v8/src/compiler/wasm-compiler.cc: In member function 'bool v8::internal::compiler::{anonymous}::WasmWrapperGraphBuilder::BuildWasmToJSWrapper(v8::internal::Handle<v8::internal::JSReceiver>, int)':
06:55:28 ../deps/v8/src/compiler/wasm-compiler.cc:4519:74: warning: comparison is always true due to limited range of data type [-Wtype-limits]
06:55:28          } else if (function->shared()->internal_formal_parameter_count() >= 0) {
06:55:28                                                                           ^
06:55:28 ../deps/v8/src/compiler/wasm-compiler.cc: In member function 'v8::internal::compiler::SourcePositionTable* v8::internal::compiler::TurbofanWasmCompilationUnit::BuildGraphForWasmFunction(v8::internal::wasm::WasmFeatures*, double*, v8::internal::compiler::MachineGraph*, v8::internal::compiler::NodeOriginTable*)':
06:55:28 ../deps/v8/src/compiler/wasm-compiler.cc:5049:30: error: use of deleted function 'v8::internal::wasm::Result<T>& v8::internal::wasm::Result<T>::operator=(v8::internal::wasm::Result<T>&&) [with T = v8::internal::wasm::DecodeStruct*]'
06:55:28    graph_construction_result_ = wasm::BuildTFGraph(
06:55:28                               ^
06:55:28 In file included from ../deps/v8/src/wasm/decoder.h:15:0,
06:55:28                  from ../deps/v8/src/wasm/function-body-decoder.h:12,
06:55:28                  from ../deps/v8/src/compiler/wasm-compiler.h:13,
06:55:28                  from ../deps/v8/src/compiler/wasm-compiler.cc:5:
06:55:28 ../deps/v8/src/wasm/wasm-result.h:79:11: note: 'v8::internal::wasm::Result<T>& v8::internal::wasm::Result<T>::operator=(v8::internal::wasm::Result<T>&&) [with T = v8::internal::wasm::DecodeStruct*]' is implicitly deleted because the default definition would be ill-formed:
06:55:28    Result& operator=(Result&& other) V8_NOEXCEPT = default;
06:55:28            ^
06:55:28 ../deps/v8/src/wasm/wasm-result.h:79:11: error: use of deleted function 'v8::internal::wasm::ResultBase& v8::internal::wasm::ResultBase::operator=(v8::internal::wasm::ResultBase&&)'
06:55:28 ../deps/v8/src/wasm/wasm-result.h:29:15: note: 'v8::internal::wasm::ResultBase& v8::internal::wasm::ResultBase::operator=(v8::internal::wasm::ResultBase&&) noexcept' is implicitly deleted because its exception-specification does not match the implicit exception-specification ''
06:55:28    ResultBase& operator=(ResultBase&& other) V8_NOEXCEPT = default;
06:55:28                ^
06:55:28 make[2]: *** [deps/v8/gypfiles/v8_base.target.mk:630: /home/iojs/build/workspace/node-test-commit-smartos/nodes/smartos16-64/out/Release/obj.target/v8_base/deps/v8/src/compiler/wasm-compiler.o] Error 1
@refack
Copy link

refack commented Sep 1, 2018

I've made some progress by adding:

diff --git a/deps/v8/src/base/compiler-specific.h b/deps/v8/src/base/compiler-specific.h
index c4c7d2a78c..cea38d6937 100644
--- a/deps/v8/src/base/compiler-specific.h
+++ b/deps/v8/src/base/compiler-specific.h
@@ -94,7 +94,8 @@

 // Allowing the use of noexcept by removing the keyword on older compilers that
 // do not support adding noexcept to default members.
-#if ((V8_GNUC_PREREQ(4, 9, 0) && !defined(V8_TARGET_ARCH_MIPS) &&        \
+#if (__cpp_exceptions && \
+     (V8_GNUC_PREREQ(4, 9, 0) && !defined(V8_TARGET_ARCH_MIPS) &&        \
       !defined(V8_TARGET_ARCH_MIPS64) && !defined(V8_TARGET_ARCH_PPC) && \
       !defined(V8_TARGET_ARCH_PPC64)) ||                                 \
      (defined(__clang__) && __cplusplus > 201300L))

since we run with -fno-exceptions anyway.

@refack
Copy link

refack commented Sep 8, 2018

@targos IIRC I can just push to this branch (since it gets overwritten every day)?
I just wanted to test 085d7c2

@targos
Copy link
Member Author

targos commented Sep 8, 2018

@refack sure, but you don't need to. You can start node-test-commit jobs against your fork

@refack
Copy link

refack commented Sep 8, 2018

Well it's compiling, so https://chromium-review.googlesource.com/c/v8/v8/+/1215222

@vulder
Copy link

vulder commented Sep 10, 2018

Hi, I tried to reproduce this issue but it compiles on my machine.
Could you please point me to a specific version and steps to reproduce this.
Then I can try to fix this upstream.

@targos
Copy link
Member Author

targos commented Sep 10, 2018

@vulder Well, me neither... I tried on my usual computer (Fedora 28) and on a fresh CentOS 7 VM.

@refack Is it possible that this is a bug in GCC that was fixed and the version on our CI is just not up to date?

@vulder
Copy link

vulder commented Sep 10, 2018

It's not a gcc bug. It related to the function's exception specification that is generated for default members. If gcc decides to generate a default member without noexcept and we specify this member as noexcept the specification does not longer match. Therefore, we get an error.

@refack
Copy link

refack commented Sep 10, 2018

@vulder thank for reviewing this. I'll try to supply as much info on the platforms where this fails:
One example is https://ci.nodejs.org/job/node-test-commit-linux/21235/nodes=ubuntu1604-64/
Machine is:

Linux test-rackspace-ubuntu1604-x64-1 4.4.0-127-generic #153-Ubuntu SMP Sat May 19 10:58:46 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

toolset:

root@test-rackspace-ubuntu1604-x64-1:~# gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

root@test-rackspace-ubuntu1604-x64-1:~# ldd --version
ldd (Ubuntu GLIBC 2.23-0ubuntu10) 2.23
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

The command line is:

node/out> g++ '-DV8_GYP_BUILD' '-DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=0' '-DV8_TARGET_ARCH_X64' '-DV8_EMBEDDER_STRING="-node.1"' '-DENABLE_DISASSEMBLER' '-DV8_PROMISE_INTERNAL_FIELD_COUNT' '-Dv8_promise_internal_field_count' '-DV8_INTL_SUPPORT' '-DV8_CONCURRENT_MARKING' '-DDISABLE_UNTRUSTED_CODE_MITIGATIONS' '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' '-DUCONFIG_NO_SERVICE=1' '-DU_ENABLE_DYLOAD=0' '-DU_STATIC_IMPLEMENTATION=1' '-DU_HAVE_STD_STRING=1' '-DUCONFIG_NO_BREAK_ITERATION=0' -I../deps/v8 -I../. -I/home/iojs/build/workspace/node-test-commit-linux/nodes/ubuntu1604-64/out/Release/obj/gen -I../deps/v8/include -I../deps/icu-small/source/i18n -I../deps/icu-small/source/common  -pthread -Wall -Wextra -Wno-unused-parameter -m64 -fno-strict-aliasing -m64 -fdata-sections -ffunction-sections -O3 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++1y -MMD -MF /home/iojs/build/workspace/node-test-commit-linux/nodes/ubuntu1604-64/out/Release/.deps//home/iojs/build/workspace/node-test-commit-linux/nodes/ubuntu1604-64/out/Release/obj.target/v8_base/deps/v8/src/compiler/wasm-compiler.o.d.raw   -c -o /home/iojs/build/workspace/node-test-commit-linux/nodes/ubuntu1604-64/out/Release/obj.target/v8_base/deps/v8/src/compiler/wasm-compiler.o ../deps/v8/src/compiler/wasm-compiler.cc
06:54:02 ../deps/v8/src/compiler/wasm-compiler.cc:5049:30: error: use of deleted function ‘v8::internal::wasm::Result<T>& v8::internal::wasm::Result<T>::operator=(v8::internal::wasm::Result<T>&&) [with T = v8::internal::wasm::DecodeStruct*]’
06:54:02    graph_construction_result_ = wasm::BuildTFGraph(
06:54:02                               ^
06:54:02 In file included from ../deps/v8/src/wasm/decoder.h:15:0,
06:54:02                  from ../deps/v8/src/wasm/function-body-decoder.h:12,
06:54:02                  from ../deps/v8/src/compiler/wasm-compiler.h:13,
06:54:02                  from ../deps/v8/src/compiler/wasm-compiler.cc:5:
06:54:02 ../deps/v8/src/wasm/wasm-result.h:79:11: note: ‘v8::internal::wasm::Result<T>& v8::internal::wasm::Result<T>::operator=(v8::internal::wasm::Result<T>&&) [with T = v8::internal::wasm::DecodeStruct*]’ is implicitly deleted because the default definition would be ill-formed:
06:54:02    Result& operator=(Result&& other) V8_NOEXCEPT = default;
06:54:02            ^
06:54:02 ../deps/v8/src/wasm/wasm-result.h:79:11: error: use of deleted function ‘v8::internal::wasm::ResultBase& v8::internal::wasm::ResultBase::operator=(v8::internal::wasm::ResultBase&&)’
06:54:02 In file included from ../deps/v8/src/wasm/decoder.h:15:0,
06:54:02                  from ../deps/v8/src/wasm/function-body-decoder.h:12,
06:54:02                  from ../deps/v8/src/compiler/wasm-compiler.h:13,
06:54:02                  from ../deps/v8/src/compiler/wasm-compiler.cc:5:
06:54:02 ../deps/v8/src/wasm/wasm-result.h:29:15: note: ‘v8::internal::wasm::ResultBase& v8::internal::wasm::ResultBase::operator=(v8::internal::wasm::ResultBase&&) noexcept’ is implicitly deleted because its exception-specification does not match the implicit exception-specification ‘’
06:54:02    ResultBase& operator=(ResultBase&& other) V8_NOEXCEPT = default;
06:54:02                ^
06:54:02 deps/v8/gypfiles/v8_base.target.mk:640: recipe for target '/home/iojs/build/workspace/node-test-commit-linux/nodes/ubuntu1604-64/out/Release/obj.target/v8_base/deps/v8/src/compiler/wasm-compiler.o' failed

@vulder
Copy link

vulder commented Sep 10, 2018

thx for the Infos:
I checked out a fresh copy of the node repo.
Build it with:
CXX=g++-6 CC=gcc-6 ./configure --debug
CXX=g++6 CC=gcc-6 make BUILDTYPE=Debug V=2 all
and it worked. Maybe I need to use a different build target, not sure. What did you use?

I see that you have gcc-5 installed and not 6 but before mentioned 6, does it work for you on 6 or do you get the same error?

@refack
Copy link

refack commented Sep 10, 2018

Maybe I need to use a different build target, not sure. What did you use?

Did you try building https://github.com/nodejs/node-v8/tree/canary or the canary-base branch of the "regular" node repo (it's where we keep V8 LKGR).

I picked one machine that failed, I'm not sure we have GCC 6 in our CI mix, and ATM our CI server is vvveerrryyy slow https://ci.nodejs.org/job/node-test-commit-linux/21235.

For easier repro I've pre-processed the file:

wasm-compiler.post.zip

Locally with GCC7 on the pre-processed file I get:

>g++ -pthread -Wall -Wextra -Wno-unused-parameter -m64 -fno-strict-aliasing -m64 -fdata-sections -ffunction-sections -O3 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++1y -MMD -MF  -c wasm-compiler.post.cc

...

../../deps/v8/src/compiler/wasm-compiler.cc:5053:63: error: use of deleted function ‘v8::internal::wasm::Result<T>& v8::internal::wasm::Result<T>::operator=(v8::internal::wasm::Result<T>&&) [with T = v8::internal::wasm::DecodeStruct*]’
In file included from ../../deps/v8/src/wasm/decoder.h:15:0,
                 from ../../deps/v8/src/wasm/function-body-decoder.h:12,
                 from ../../deps/v8/src/compiler/wasm-compiler.h:13,
                 from ../../deps/v8/src/compiler/wasm-compiler.cc:5:
../../deps/v8/src/wasm/wasm-result.h:79:11: note: ‘v8::internal::wasm::Result<T>& v8::internal::wasm::Result<T>::operator=(v8::internal::wasm::Result<T>&&) [with T = v8::internal::wasm::DecodeStruct*]’ is implicitly deleted because the default definition would be ill-formed:
../../deps/v8/src/wasm/wasm-result.h:79:11: error: use of deleted function ‘v8::internal::wasm::ResultBase& v8::internal::wasm::ResultBase::operator=(v8::internal::wasm::ResultBase&&)’
In file included from ../../deps/v8/src/wasm/decoder.h:15:0,
                 from ../../deps/v8/src/wasm/function-body-decoder.h:12,
                 from ../../deps/v8/src/compiler/wasm-compiler.h:13,
                 from ../../deps/v8/src/compiler/wasm-compiler.cc:5:
../../deps/v8/src/wasm/wasm-result.h:29:15: note: ‘v8::internal::wasm::ResultBase& v8::internal::wasm::ResultBase::operator=(v8::internal::wasm::ResultBase&&) noexcept’ is implicitly deleted because its exception-specification does not match the implicit exception-specification ‘’

@targos
Copy link
Member Author

targos commented Sep 10, 2018

I'm the one who mentioned GCC 6. It was because one of the failing CI run was on centos7-64-gcc6

@vulder
Copy link

vulder commented Sep 10, 2018

thanks, the file helped. It's what I expected.
I'm going to building a patch cl for v8 and send it to you for testing. If it compiles afterwards and your problems are fixed I'm going to land it an bug fix merge it into the last release, so you can pull in v8 as usual.

@vulder
Copy link

vulder commented Sep 10, 2018

Ok, sadly my first idea did not work -.-
I preprocessed the same file on my machine, the relevant parts of the code look the same.
Using gcc-6 I cannot figure out why ResultBase move constructor gets deleted in your version but not in my one.
Could you please compile the two attached files on your machine and post the output.

foo.cpp is just a smaller test that hopefully triggers the behavior.
wasm.zip

@refack
Copy link

refack commented Sep 10, 2018

Your preprocessed file compiles, foo.cpp doesn't (I used all the -Ds and -Is just because I'm lazy)...

P.S. this is GCC 5 (on our CI cluster). Locally with GCC7 it works.

iojs@test-rackspace-ubuntu1604-x64-1:~/build/node-test-commit-custom-suites/out/Release$ c++ -MMD -MF obj/deps/v8/src/compiler/v8_base.wasm-compiler.o.d -DV8_GYP_BUILD -DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=0 -DV8_TARGET_ARCH_X64 '-DV8_EMBEDDER_STRING="-n
ode.0"' -DENABLE_DISASSEMBLER -DV8_PROMISE_INTERNAL_FIELD_COUNT -Dv8_promise_internal_field_count -DV8_INTL_SUPPORT -DV8_CONCURRENT_MARKING -DDISABLE_UNTRUSTED_CODE_MITIGATIONS -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC -DUCONFIG_NO_SERVICE=1 -DU_ENAB
LE_DYLOAD=0 -DU_STATIC_IMPLEMENTATION=1 -DU_HAVE_STD_STRING=1 -DUCONFIG_NO_BREAK_ITERATION=0 -I../../deps/v8 -I../.. -Igen -I../../deps/v8/include -I../../deps/icu-small/source/i18n -I../../deps/icu-small/source/common -pthread -Wall -Wextra -Wno-unu
sed-parameter -m64 -fno-strict-aliasing -m64 -fdata-sections -ffunction-sections  -O3 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++1y -c wasm-compiler-sattlerf.cc
In file included from ../deps/v8/src/x64/assembler-x64-inl.h:12:0,
                 from ../deps/v8/src/assembler-inl.h:13,
                 from ../deps/v8/src/compiler/wasm-compiler.cc:9:
../deps/v8/src/objects-inl.h: In function ‘bool v8::internal::InstanceTypeChecker::IsName(v8::internal::InstanceType)’:
../deps/v8/src/objects-inl.h:99:1536: warning: comparison is always true due to limited range of data type [-Wtype-limits]
../deps/v8/src/objects-inl.h: In function ‘bool v8::internal::InstanceTypeChecker::IsString(v8::internal::InstanceType)’:
../deps/v8/src/objects-inl.h:99:1691: warning: comparison is always true due to limited range of data type [-Wtype-limits]
../deps/v8/src/compiler/wasm-compiler.cc: In member function ‘bool v8::internal::compiler::{anonymous}::WasmWrapperGraphBuilder::BuildWasmToJSWrapper(v8::internal::Handle<v8::internal::JSReceiver>, int)’:
../deps/v8/src/compiler/wasm-compiler.cc:4546:74: warning: comparison is always true due to limited range of data type [-Wtype-limits]
In file included from ../deps/v8/src/compiler/diamond.h:9:0,
                 from ../deps/v8/src/compiler/wasm-compiler.cc:21:
../deps/v8/src/compiler/graph.h: In member function ‘v8::internal::compiler::Node* v8::internal::compiler::WasmGraphBuilder::BuildChangeEndiannessStore(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::wasm::ValueType
’:
../deps/v8/src/compiler/graph.h:70:61: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized]
../deps/v8/src/compiler/wasm-compiler.cc:1091:9: note: ‘result’ was declared here
In file included from ../deps/v8/src/compiler/diamond.h:9:0,
                 from ../deps/v8/src/compiler/wasm-compiler.cc:21:
../deps/v8/src/compiler/graph.h: In member function ‘v8::internal::compiler::Node* v8::internal::compiler::WasmGraphBuilder::BuildChangeEndiannessLoad(v8::internal::compiler::Node*, v8::internal::MachineType, v8::internal::wasm::ValueType)’:
../deps/v8/src/compiler/graph.h:70:61: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized]
../deps/v8/src/compiler/wasm-compiler.cc:1240:9: note: ‘result’ was declared here
iojs@test-rackspace-ubuntu1604-x64-1:~/build/node-test-commit-custom-suites/out/Release$ c++ -MMD -MF obj/deps/v8/src/compiler/v8_base.wasm-compiler.o.d -DV8_GYP_BUILD -DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=0 -DV8_TARGET_ARCH_X64 '-DV8_EMBEDDER_STRING="-node.0"' -DENABLE_DISASSEMBLER -DV8_PROMISE_INTERNAL_FIELD_COUNT -Dv8_promise_internal_field_count -DV8_INTL_SUPPORT -DV8_CONCURRENT_MARKING -DDISABLE_UNTRUSTED_CODE_MITIGATIONS -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC -DUCONFIG_NO_SERVICE=1 -DU_ENABLE_DYLOAD=0 -DU_STATIC_IMPLEMENTATION=1 -DU_HAVE_STD_STRING=1 -DUCONFIG_NO_BREAK_ITERATION=0 -I../../deps/v8 -I../.. -Igen -I../../deps/v8/include -I../../deps/icu-small/source/i18n -I../../deps/icu-small/source/common -pthread -Wall -Wextra -Wno-unused-parameter -m64 -fno-strict-aliasing -m64 -fdata-sections -ffunction-sections  -O3 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++1y -c foo.cpp
foo.cpp: In function ‘int main(int, char**)’:
foo.cpp:88:5: error: use of deleted function ‘S& S::operator=(S&&)’
   f = std::move(s);
     ^
foo.cpp:60:6: note: ‘S& S::operator=(S&&)’ is implicitly deleted because the default definition would be ill-formed:
   S& operator=(S &&) noexcept = default;
      ^
foo.cpp:60:6: error: use of deleted function ‘ResultBase& ResultBase::operator=(ResultBase&&)’
foo.cpp:9:15: note: ‘ResultBase& ResultBase::operator=(ResultBase&&) noexcept’ is implicitly deleted because its exception-specification does not match the implicit exception-specification ‘’
   ResultBase& operator=(ResultBase&& other) noexcept = default;
               ^
foo.cpp:89:5: error: use of deleted function ‘Result<T>& Result<T>::operator=(Result<T>&&) [with T = Fo*]’
   B = strange();
     ^
foo.cpp:48:11: note: ‘Result<T>& Result<T>::operator=(Result<T>&&) [with T = Fo*]’ is implicitly deleted because the default definition would be ill-formed:
   Result& operator=(Result&& other) noexcept = default;
           ^
foo.cpp:48:11: error: use of deleted function ‘ResultBase& ResultBase::operator=(ResultBase&&)’
foo.cpp:90:5: error: use of deleted function ‘Result<T>& Result<T>::operator=(Result<T>&&) [with T = void*]’
   D = std::move(C);
     ^
foo.cpp:48:11: note: ‘Result<T>& Result<T>::operator=(Result<T>&&) [with T = void*]’ is implicitly deleted because the default definition would be ill-formed:
   Result& operator=(Result&& other) noexcept = default;
           ^
foo.cpp:48:11: error: use of deleted function ‘ResultBase& ResultBase::operator=(ResultBase&&)’

@refack
Copy link

refack commented Sep 16, 2018

Landed upstream as https://chromium-review.googlesource.com/c/v8/v8/+/1219632 (by @vulder)

@targos
Copy link
Member Author

targos commented Sep 17, 2018

Thank you @vulder and @refack!

@targos targos closed this as completed Sep 17, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants