diff --git a/flang/test/Semantics/data05.f90 b/flang/test/Semantics/data05.f90 --- a/flang/test/Semantics/data05.f90 +++ b/flang/test/Semantics/data05.f90 @@ -1,4 +1,4 @@ -!RUN: %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s +!RUN: not %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s module m interface integer function ifunc(n) diff --git a/flang/test/Semantics/offsets01.f90 b/flang/test/Semantics/offsets01.f90 --- a/flang/test/Semantics/offsets01.f90 +++ b/flang/test/Semantics/offsets01.f90 @@ -1,4 +1,4 @@ -!RUN: %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s +!RUN: not %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s ! Size and alignment of intrinsic types subroutine s1 diff --git a/flang/test/Semantics/offsets02.f90 b/flang/test/Semantics/offsets02.f90 --- a/flang/test/Semantics/offsets02.f90 +++ b/flang/test/Semantics/offsets02.f90 @@ -1,4 +1,4 @@ -!RUN: %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s +!RUN: not %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s ! Size and alignment of derived types diff --git a/flang/test/Semantics/typeinfo01.f90 b/flang/test/Semantics/typeinfo01.f90 --- a/flang/test/Semantics/typeinfo01.f90 +++ b/flang/test/Semantics/typeinfo01.f90 @@ -1,4 +1,4 @@ -!RUN: %f18 -fdebug-dump-symbols %s | FileCheck %s +!RUN: not %f18 -fdebug-dump-symbols %s | FileCheck %s ! Tests for derived type runtime descriptions module m01 diff --git a/flang/tools/f18/f18.cpp b/flang/tools/f18/f18.cpp --- a/flang/tools/f18/f18.cpp +++ b/flang/tools/f18/f18.cpp @@ -277,6 +277,12 @@ if (driver.dumpSymbols) { semantics.DumpSymbols(llvm::outs()); } + if (semantics.AnyFatalError()) { + llvm::errs() << driver.prefix << "Semantic errors in " << path << '\n'; + semantics.EmitMessages(llvm::errs()); + exitStatus = EXIT_FAILURE; + return {}; + } if (driver.dumpUnparseWithSymbols) { Fortran::semantics::UnparseWithSymbols( llvm::outs(), parseTree, driver.encoding);