Skip to content

Commit 50ac3b1

Browse files
authored
g++ build fix (#2778)
Introduced in 704cfda of @wu-s-john g++ compiler error: Pooling.cpp:177:13: error: explicit specialization in non-namespace scope ‘class Design looks good, g++ is just freaking out for no good reason. Un-nesting the template classes fixes the error. We don't have g++ CI. This hopefully happens infrequently enough that we can just fix manually. My service to those folks who really like building with g++... :)
1 parent 2f49240 commit 50ac3b1

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

lib/Conversion/TorchToLinalg/Pooling.cpp

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ checkAndGetPoolingParameters(OpTy op, ConversionPatternRewriter &rewriter,
7272
return success();
7373
}
7474

75-
static Value computeOutputTensor(Operation *op, ConversionPatternRewriter &rewriter,
75+
static Value
76+
computeOutputTensor(Operation *op, ConversionPatternRewriter &rewriter,
7677
Value self, int64_t dimensionality, bool ceilMode,
7778
SmallVectorImpl<int64_t> &strideInts,
7879
SmallVectorImpl<int64_t> &paddingInts,
@@ -167,24 +168,29 @@ static LogicalResult createPoolingOp(
167168
}
168169

169170
namespace {
171+
172+
template <typename T> struct DimensionTraits {};
173+
174+
template <> struct DimensionTraits<AtenMaxPool2dOp> {
175+
static constexpr int64_t Dim = 2;
176+
// unused const variable warning suppression:
177+
static_assert(Dim == Dim);
178+
};
179+
180+
template <> struct DimensionTraits<AtenMaxPool3dOp> {
181+
static constexpr int64_t Dim = 3;
182+
// unused const variable warning suppression:
183+
static_assert(Dim == Dim);
184+
};
185+
170186
template <typename OpTy>
171187
class ConvertAtenMaxPoolOp : public OpConversionPattern<OpTy> {
172188
using OpConversionPattern<OpTy>::OpConversionPattern;
173189

174190
private:
175-
template <typename T> struct DimensionTraits;
176-
177-
template <> struct DimensionTraits<AtenMaxPool2dOp> {
178-
static const int64_t Dim = 2;
179-
};
180-
181-
template <> struct DimensionTraits<AtenMaxPool3dOp> {
182-
static const int64_t Dim = 3;
183-
};
184-
185191
static const int64_t Dim = DimensionTraits<OpTy>::Dim;
186192

187-
LogicalResult createPoolingMax3D(AtenMaxPool3dOp &op,
193+
LogicalResult createPoolingMax3D(AtenMaxPool3dOp &op,
188194
typename OpTy::Adaptor adaptor,
189195
ConversionPatternRewriter &rewriter,
190196
SmallVectorImpl<Value> &kernelSizeIntValues,
@@ -327,9 +333,9 @@ class ConvertAtenMaxPoolOp : public OpConversionPattern<OpTy> {
327333
rewriter.replaceOpWithNewOp<tensor::CastOp>(op, newResultType, maxPool2d);
328334
return success();
329335
} else {
330-
return createPoolingMax3D(op, adaptor, rewriter,
331-
kernelSizeIntValues, strideInts, paddingInts,
332-
dilationInts, ceilMode);
336+
return createPoolingMax3D(op, adaptor, rewriter, kernelSizeIntValues,
337+
strideInts, paddingInts, dilationInts,
338+
ceilMode);
333339
}
334340
}
335341
};

0 commit comments

Comments
 (0)