Index: flang/lib/Semantics/resolve-names.cpp =================================================================== --- flang/lib/Semantics/resolve-names.cpp +++ flang/lib/Semantics/resolve-names.cpp @@ -5266,7 +5266,7 @@ } else if (specPartState_.saveInfo.saveAll) { // C889 - note that pgi, ifort, xlf do not enforce this constraint Say2(name, - "Explicit SAVE of '%s' is redundant due to global SAVE statement"_err_en_US, + "Explicit SAVE of '%s' is redundant due to global SAVE statement"_warn_en_US, *specPartState_.saveInfo.saveAll, "Global SAVE statement"_en_US); } else if (auto msg{CheckSaveAttr(*symbol)}) { Say(name, std::move(*msg)); Index: flang/test/Semantics/resolve45.f90 =================================================================== --- flang/test/Semantics/resolve45.f90 +++ flang/test/Semantics/resolve45.f90 @@ -34,13 +34,13 @@ end subroutine s4 - !ERROR: Explicit SAVE of 'z' is redundant due to global SAVE statement + !WARNING: Explicit SAVE of 'z' is redundant due to global SAVE statement save z save procedure(integer), pointer :: x - !ERROR: Explicit SAVE of 'x' is redundant due to global SAVE statement + !WARNING: Explicit SAVE of 'x' is redundant due to global SAVE statement save :: x - !ERROR: Explicit SAVE of 'y' is redundant due to global SAVE statement + !WARNING: Explicit SAVE of 'y' is redundant due to global SAVE statement integer, save :: y end