Index: clang-tools-extra/trunk/clang-tidy/readability/RedundantControlFlowCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/readability/RedundantControlFlowCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/readability/RedundantControlFlowCheck.cpp @@ -83,7 +83,7 @@ dyn_cast(*Previous)->getLocEnd(), tok::semi, SM, Result.Context->getLangOpts(), /*SkipTrailingWhitespaceAndNewLine=*/true); - else + if (!Start.isValid()) Start = StmtRange.getBegin(); auto RemovedRange = CharSourceRange::getCharRange( Start, Index: clang-tools-extra/trunk/test/clang-tidy/readability-redundant-control-flow.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/readability-redundant-control-flow.cpp +++ clang-tools-extra/trunk/test/clang-tidy/readability-redundant-control-flow.cpp @@ -179,6 +179,7 @@ // CHECK-FIXES: {{^}} if (check < T(0)) {{{$}} // CHECK-FIXES-NEXT: {{^ return;$}} // CHECK-FIXES-NEXT: {{^ *}$}} +// CHECK-FIXES-NEXT: {{^ *}$}} template <> void template_return(int check) { @@ -191,6 +192,7 @@ // CHECK-FIXES: {{^}} if (check < 0) {{{$}} // CHECK-FIXES-NEXT: {{^ return;$}} // CHECK-FIXES-NEXT: {{^ *}$}} +// CHECK-FIXES-NEXT: {{^ *}$}} template void template_loop(T end) {