Merge #36644: caffe2: fix compilation on gcc7

This commit is contained in:
Vladimír Čunát 2018-03-09 20:43:50 +01:00
commit b441512ced
No known key found for this signature in database
GPG Key ID: E747DF1F9575A3AA
2 changed files with 52 additions and 2 deletions

View File

@ -1,4 +1,4 @@
{ stdenv, lib, config, fetchFromGitHub
{ stdenv, lib, config, fetchFromGitHub, fetchpatch
, cmake
, glog, google-gflags, gtest
, protobuf, snappy
@ -56,6 +56,8 @@ let
};
dst = "pybind11";
};
ccVersion = (builtins.parseDrvName stdenv.cc.name).version;
in
stdenv.mkDerivation rec {
@ -84,7 +86,9 @@ stdenv.mkDerivation rec {
;
propagatedBuildInputs = [ numpy future six python-protobuf pydot ];
patches = lib.optional stdenv.cc.isClang [ ./update_clang_cvtsh_bugfix.patch ];
patches = lib.optional (stdenv.cc.isGNU && lib.versionAtLeast ccVersion "7.0.0") [
./fix_compilation_on_gcc7.patch
] ++ lib.optional stdenv.cc.isClang [ ./update_clang_cvtsh_bugfix.patch ];
cmakeFlags = [ ''-DBUILD_TEST=OFF''
''-DBUILD_PYTHON=ON''

View File

@ -0,0 +1,46 @@
diff --git a/caffe2/operators/recurrent_network_op.cc b/caffe2/operators/recurrent_network_op.cc
index dd4fded..5995e8a 100644
--- a/caffe2/operators/recurrent_network_op.cc
+++ b/caffe2/operators/recurrent_network_op.cc
@@ -1,4 +1,4 @@
-#include "recurrent_network_op.h"
+#include "caffe2/operators/recurrent_network_op.h"
#include "caffe2/core/workspace.h"
namespace caffe2 {
diff --git a/caffe2/operators/recurrent_network_op.h b/caffe2/operators/recurrent_network_op.h
index 55328e5..ea898bc 100644
--- a/caffe2/operators/recurrent_network_op.h
+++ b/caffe2/operators/recurrent_network_op.h
@@ -762,8 +762,8 @@ class AccumulateInputGradientOp : public Operator<Context> {
USE_OPERATOR_CONTEXT_FUNCTIONS;
bool RunOnDevice() override {
- const auto t =
- OperatorBase::Input<Tensor<CPUContext>>(0).template data<int32_t>()[0];
+ const auto& t0 = OperatorBase::Input<Tensor<CPUContext>>(0);
+ const auto t = t0.template data<int32_t>()[0];
auto& og = Input(1);
auto* g = Output(0);
diff --git a/caffe2/queue/queue_ops.h b/caffe2/queue/queue_ops.h
index f2c0a33..642343f 100644
--- a/caffe2/queue/queue_ops.h
+++ b/caffe2/queue/queue_ops.h
@@ -17,13 +17,10 @@ class CreateBlobsQueueOp final : public Operator<Context> {
name(operator_def.output().Get(0)) {}
bool RunOnDevice() override {
- const auto capacity =
- OperatorBase::template GetSingleArgument<int>("capacity", 1);
- const auto numBlobs =
- OperatorBase::template GetSingleArgument<int>("num_blobs", 1);
+ const auto capacity = GetSingleArgument("capacity", 1);
+ const auto numBlobs = GetSingleArgument("num_blobs", 1);
const auto enforceUniqueName =
- OperatorBase::template GetSingleArgument<int>(
- "enforce_unique_name", false);
+ GetSingleArgument("enforce_unique_name", false);
const auto fieldNames =
OperatorBase::template GetRepeatedArgument<std::string>("field_names");
CAFFE_ENFORCE_EQ(this->OutputSize(), 1);