[flang] dodge clang build problem with constexpr

Original-commit: flang-compiler/f18@83995a5a98
Reviewed-on: https://github.com/flang-compiler/f18/pull/449
Tree-same-pre-rewrite: false
This commit is contained in:
peter klausler 2019-05-07 17:05:14 -07:00
parent 04d85f1754
commit 91de1f62fb

View file

@ -107,19 +107,23 @@ public:
template<typename T> void Descend(const Expr<T> &expr) { Visit(expr.u); }
template<typename T> void Descend(Expr<T> &expr) { Visit(expr.u); }
template<typename D, typename R, typename... O>
void Descend(const Operation<D, R, O...> &op) {
template<typename D, typename R, typename X>
void Descend(const Operation<D, R, X> &op) {
Visit(op.left());
if constexpr (op.operands > 1) {
Visit(op.right());
}
}
template<typename D, typename R, typename... O>
void Descend(Operation<D, R, O...> &op) {
template<typename D, typename R, typename X>
void Descend(Operation<D, R, X> &op) {
Visit(op.left());
if constexpr (op.operands > 1) {
Visit(op.right());
}
}
template<typename D, typename R, typename X, typename Y>
void Descend(const Operation<D, R, X, Y> &op) {
Visit(op.left());
Visit(op.right());
}
template<typename D, typename R, typename X, typename Y>
void Descend(Operation<D, R, X, Y> &op) {
Visit(op.left());
Visit(op.right());
}
void Descend(const Relational<SomeType> &r) { Visit(r.u); }