Index: lib/AST/ASTDumper.cpp =================================================================== --- lib/AST/ASTDumper.cpp +++ lib/AST/ASTDumper.cpp @@ -1074,7 +1074,6 @@ NodeDumper.dumpName(D); NodeDumper.dumpType(D->getType()); OS << " combiner"; - dumpStmt(D->getCombiner()); if (auto *Initializer = D->getInitializer()) { OS << " initializer"; switch (D->getInitializerKind()) { @@ -1089,6 +1088,7 @@ } dumpStmt(Initializer); } + dumpStmt(D->getCombiner()); } void ASTDumper::VisitOMPRequiresDecl(const OMPRequiresDecl *D) { Index: test/AST/dump.cpp =================================================================== --- test/AST/dump.cpp +++ test/AST/dump.cpp @@ -29,10 +29,6 @@ // CHECK-NEXT: | |-VarDecl {{.+}} col:40 implicit used omp_in 'char' // CHECK-NEXT: | `-VarDecl {{.+}} col:40 implicit used omp_out 'char' // CHECK-NEXT: |-OMPDeclareReductionDecl {{.+}} col:37 fun 'float' combiner initializer -// CHECK-NEXT: | |-CompoundAssignOperator {{.+}} 'float' lvalue '+=' ComputeLHSTy='float' ComputeResultTy='float' -// CHECK-NEXT: | | |-DeclRefExpr {{.+}} 'float' lvalue Var {{.+}} 'omp_out' 'float' -// CHECK-NEXT: | | `-ImplicitCastExpr {{.+}} 'float' -// CHECK-NEXT: | | `-DeclRefExpr {{.+}} 'float' lvalue Var {{.+}} 'omp_in' 'float' // CHECK-NEXT: | |-BinaryOperator {{.+}} 'float' lvalue '=' // CHECK-NEXT: | | |-DeclRefExpr {{.+}} 'float' lvalue Var {{.+}} 'omp_priv' 'float' // CHECK-NEXT: | | `-BinaryOperator {{.+}} 'float' '+' @@ -40,6 +36,10 @@ // CHECK-NEXT: | | | `-DeclRefExpr {{.+}} 'float' lvalue Var {{.+}} 'omp_orig' 'float' // CHECK-NEXT: | | `-ImplicitCastExpr {{.+}} 'float' // CHECK-NEXT: | | `-IntegerLiteral {{.+}} 'int' 15 +// CHECK-NEXT: | |-CompoundAssignOperator {{.+}} 'float' lvalue '+=' ComputeLHSTy='float' ComputeResultTy='float' +// CHECK-NEXT: | | |-DeclRefExpr {{.+}} 'float' lvalue Var {{.+}} 'omp_out' 'float' +// CHECK-NEXT: | | `-ImplicitCastExpr {{.+}} 'float' +// CHECK-NEXT: | | `-DeclRefExpr {{.+}} 'float' lvalue Var {{.+}} 'omp_in' 'float' struct S { int a, b;