Daily bump.
[official-gcc.git] / gcc / fortran / lang.opt
blob2b7f2903761865dead2076210382f40d443df881
1 ; Options for the Fortran front end.
2 ; Copyright (C) 2003-2018 Free Software Foundation, Inc.
4 ; This file is part of GCC.
6 ; GCC is free software; you can redistribute it and/or modify it under
7 ; the terms of the GNU General Public License as published by the Free
8 ; Software Foundation; either version 3, or (at your option) any later
9 ; version.
10
11 ; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12 ; WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 ; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 ; for more details.
15
16 ; You should have received a copy of the GNU General Public License
17 ; along with GCC; see the file COPYING3.  If not see
18 ; <http://www.gnu.org/licenses/>.
20 ; See the GCC internals manual for a description of this file's format.
22 ; Please try to keep this file in ASCII collating order.
24 Language
25 Fortran
27 -all-warnings
28 Fortran Alias(Wall)
30 -assert
31 Fortran Separate Alias(A)
33 -assert=
34 Fortran Joined Alias(A)
36 -comments
37 Fortran Alias(C)
39 -comments-in-macros
40 Fortran Alias(CC)
42 -define-macro
43 Fortran Separate Alias(D)
45 -define-macro=
46 Fortran Joined Alias(D)
48 -dependencies
49 Fortran Alias(M)
51 -dump
52 Fortran Separate Alias(d)
54 -dump=
55 Fortran Joined Alias(d)
57 -include-barrier
58 Fortran Alias(I, -)
60 -include-directory
61 Fortran Separate Alias(I)
63 -include-directory=
64 Fortran Joined Alias(I)
66 -include-directory-after
67 Fortran Separate Alias(idirafter)
69 -include-directory-after=
70 Fortran Joined Alias(idirafter)
72 -include-prefix
73 Fortran Separate Alias(iprefix)
75 -include-prefix=
76 Fortran JoinedOrMissing Alias(iprefix)
78 -no-line-commands
79 Fortran Alias(P)
81 -no-standard-includes
82 Fortran Alias(nostdinc)
84 -output
85 Fortran Separate Alias(o)
87 -output=
88 Fortran Joined Alias(o)
90 -preprocess
91 Fortran Undocumented Alias(E)
93 -print-missing-file-dependencies
94 Fortran Alias(MG)
96 -trace-includes
97 Fortran Alias(H)
99 -undefine-macro
100 Fortran Separate Alias(U)
102 -undefine-macro=
103 Fortran Joined Alias(U)
105 -user-dependencies
106 Fortran Alias(MM)
108 -verbose
109 Fortran Alias(v)
111 -write-dependencies
112 Fortran NoDriverArg Separate Alias(MD)
114 -write-user-dependencies
115 Fortran NoDriverArg Separate Alias(MMD)
118 Fortran Joined Separate
119 ; Documented in C
122 Fortran
123 ; Documented in C
126 Fortran
127 ; Documented in C
130 Fortran Joined Separate
131 ; Documented in C
134 Fortran Undocumented
137 Fortran
138 ; Documented in C
141 Fortran Joined Separate
142 ; Documented in C
145 Fortran Joined Separate
146 -J<directory>   Put MODULE files in 'directory'.
149 Fortran
150 ; Documented in C
153 Fortran Separate NoDriverArg
154 ; Documented in C
157 Fortran Joined Separate
158 ; Documented in C
161 Fortran
162 ; Documented in C
165 Fortran
166 ; Documented in C
169 Fortran Separate NoDriverArg
170 ; Documented in C
173 Fortran
174 ; Documented in C
177 Fortran Joined Separate
178 ; Documented in C
181 Fortran Joined Separate
182 ; Documented in C
185 Fortran
186 ; Documented in C
189 Fortran Joined Separate
190 ; Documented in C
192 Wall
193 Fortran
194 ; Documented in C
196 Waliasing
197 Fortran Warning Var(warn_aliasing) LangEnabledBy(Fortran,Wall)
198 Warn about possible aliasing of dummy arguments.
200 Walign-commons
201 Fortran Warning Var(warn_align_commons) Init(1)
202 Warn about alignment of COMMON blocks.
204 Wampersand
205 Fortran Warning Var(warn_ampersand) LangEnabledBy(Fortran,Wall || Wpedantic)
206 Warn about missing ampersand in continued character constants.
208 Warray-temporaries
209 Fortran Warning Var(warn_array_temporaries)
210 Warn about creation of array temporaries.
212 Wargument-mismatch
213 Fortran Warning Var(warn_argument_mismatch) Init(1)
214 Warn about type and rank mismatches between arguments and parameters.
216 Wc-binding-type
217 Fortran Var(warn_c_binding_type) Warning LangEnabledBy(Fortran,Wall)
218 Warn if the type of a variable might be not interoperable with C.
220 Wdate-time
221 Fortran
222 ; Documented in C
224 Wcharacter-truncation
225 Fortran Var(warn_character_truncation) Warning LangEnabledBy(Fortran,Wall)
226 Warn about truncated character expressions.
228 Wcompare-reals
229 Fortran Warning Var(warn_compare_reals) LangEnabledBy(Fortran,Wextra)
230 Warn about equality comparisons involving REAL or COMPLEX expressions.
232 Wconversion
233 Fortran Var(warn_conversion) Warning LangEnabledBy(Fortran,Wall)
234 ; Documented in C
236 Wconversion-extra
237 Fortran Var(warn_conversion_extra) Warning
238 Warn about most implicit conversions.
240 Wdo-subscript
241 Fortran Var(warn_do_subscript) Warning LangEnabledBy(Fortran,Wextra)
242 Warn about possibly incorrect subscripts in do loops.
244 Wextra
245 Fortran Warning
246 ; Documented in common
248 Wfrontend-loop-interchange
249 Fortran Var(flag_warn_frontend_loop_interchange)
250 Warn if loops have been interchanged.
252 Wfunction-elimination
253 Fortran Warning Var(warn_function_elimination) LangEnabledBy(Fortran,Wextra)
254 Warn about function call elimination.
256 Wimplicit-interface
257 Fortran Warning Var(warn_implicit_interface)
258 Warn about calls with implicit interface.
260 Wimplicit-procedure
261 Fortran Warning Var(warn_implicit_procedure)
262 Warn about called procedures not explicitly declared.
264 Winteger-division
265 Fortran Warning Var(warn_integer_division) LangEnabledBy(Fortran,Wall)
266 Warn about constant integer divisions with truncated results.
268 Wline-truncation
269 Fortran Warning Var(warn_line_truncation) LangEnabledBy(Fortran,Wall) Init(-1)
270 Warn about truncated source lines.
272 Wintrinsics-std
273 Fortran Var(warn_intrinsics_std) Warning LangEnabledBy(Fortran,Wall)
274 Warn on intrinsics not part of the selected standard.
276 Wmaybe-uninitialized
277 Fortran LangEnabledBy(Fortran,Wall)
278 ; Documented in common.opt
280 Wmissing-include-dirs
281 Fortran
282 ; Documented in C/C++
284 Wuse-without-only
285 Fortran Var(warn_use_without_only) Warning
286 Warn about USE statements that have no ONLY qualifier.
288 Wopenmp-simd
289 Fortran
290 ; Documented in C
292 Wpedantic
293 Fortran
294 ; Documented in common.opt
296 Wreal-q-constant
297 Fortran Warning Var(warn_real_q_constant) LangEnabledBy(Fortran,Wall)
298 Warn about real-literal-constants with 'q' exponent-letter.
300 Wrealloc-lhs
301 Fortran Warning Var(warn_realloc_lhs) LangEnabledBy(Fortran,Wrealloc-lhs-all)
302 Warn when a left-hand-side array variable is reallocated.
304 Wrealloc-lhs-all
305 Fortran Warning Var(warn_realloc_lhs_all)
306 Warn when a left-hand-side variable is reallocated.
308 Wtarget-lifetime
309 Fortran Warning Var(warn_target_lifetime) LangEnabledBy(Fortran,Wall)
310 Warn if the pointer in a pointer assignment might outlive its target.
312 Wreturn-type
313 Fortran Warning LangEnabledBy(Fortran,Wall)
314 ; Documented in C
316 Wsurprising
317 Fortran Warning Var(warn_surprising) LangEnabledBy(Fortran,Wall)
318 Warn about \"suspicious\" constructs.
320 Wtabs
321 Fortran Warning Var(warn_tabs) LangEnabledBy(Fortran,Wall || Wpedantic)
322 Permit nonconforming uses of the tab character.
324 Wundefined-do-loop
325 Fortran Warning Var(warn_undefined_do_loop) LangEnabledBy(Fortran,Wall)
326 Warn about an invalid DO loop.
328 Wunderflow
329 Fortran Warning Var(warn_underflow) Init(1)
330 Warn about underflow of numerical constant expressions.
332 Wuninitialized
333 Fortran LangEnabledBy(Fortran,Wall)
334 ; Documented in common.opt
336 Wintrinsic-shadow
337 Fortran Warning Var(warn_intrinsic_shadow) LangEnabledBy(Fortran,Wall)
338 Warn if a user-procedure has the same name as an intrinsic.
340 Wunused
341 LangEnabledBy(Fortran,Wall)
342 ; Documented in common.opt
344 Wunused-dummy-argument
345 Fortran Warning Var(warn_unused_dummy_argument) LangEnabledBy(Fortran,Wall)
346 Warn about unused dummy arguments.
348 Wzerotrip
349 Fortran Warning Var(warn_zerotrip) LangEnabledBy(Fortran,Wall)
350 Warn about zero-trip DO loops.
353 Fortran Negative(nocpp)
354 Enable preprocessing.
356 cpp=
357 Fortran Joined Negative(nocpp) Undocumented NoDWARFRecord
358 ; Internal option generated by specs from -cpp.
360 nocpp
361 Fortran Negative(cpp)
362 Disable preprocessing.
365 Fortran Joined
366 ; Documented in common.opt
368 faggressive-function-elimination
369 Fortran Var(flag_aggressive_function_elimination)
370 Eliminate multiple function invocations also for impure functions.
372 falign-commons
373 Fortran Var(flag_align_commons) Init(1)
374 Enable alignment of COMMON blocks.
376 fall-intrinsics
377 Fortran RejectNegative Var(flag_all_intrinsics)
378 All intrinsics procedures are available regardless of selected standard.
380 fallow-leading-underscore
381 Fortran Undocumented Var(flag_allow_leading_underscore)
382 ; For internal use only: allow the first character of symbol names to be an underscore
384 fautomatic
385 Fortran Var(flag_automatic) Init(1)
386 Do not treat local variables and COMMON blocks as if they were named in SAVE statements.
388 fbackslash
389 Fortran Var(flag_backslash)
390 Specify that backslash in string introduces an escape character.
392 fbacktrace
393 Fortran Var(flag_backtrace) Init(1)
394 Produce a backtrace when a runtime error is encountered.
396 fblas-matmul-limit=
397 Fortran RejectNegative Joined UInteger Var(flag_blas_matmul_limit) Init(30)
398 -fblas-matmul-limit=<n> Size of the smallest matrix for which matmul will use BLAS.
400 fcheck-array-temporaries
401 Fortran
402 Produce a warning at runtime if a array temporary has been created for a procedure argument.
404 fconvert=
405 Fortran RejectNegative Joined Enum(gfc_convert) Var(flag_convert) Init(GFC_FLAG_CONVERT_NATIVE)
406 -fconvert=<big-endian|little-endian|native|swap> The endianness used for unformatted files.
408 Enum
409 Name(gfc_convert) Type(enum gfc_convert) UnknownError(Unrecognized option to endianness value: %qs)
411 EnumValue
412 Enum(gfc_convert) String(big-endian) Value(GFC_FLAG_CONVERT_BIG)
414 EnumValue
415 Enum(gfc_convert) String(little-endian) Value(GFC_FLAG_CONVERT_LITTLE)
417 EnumValue
418 Enum(gfc_convert) String(native) Value(GFC_FLAG_CONVERT_NATIVE)
420 EnumValue
421 Enum(gfc_convert) String(swap) Value(GFC_FLAG_CONVERT_SWAP)
423 fcray-pointer
424 Fortran Var(flag_cray_pointer)
425 Use the Cray Pointer extension.
427 fc-prototypes
428 Fortran Var(flag_c_prototypes)
429 Generate C prototypes from BIND(C) declarations.
431 fd-lines-as-code
432 Fortran RejectNegative
433 Ignore 'D' in column one in fixed form.
435 fd-lines-as-comments
436 Fortran RejectNegative
437 Treat lines with 'D' in column one as comments.
439 fdec
440 Fortran Var(flag_dec)
441 Enable all DEC language extensions.
443 fdec-intrinsic-ints
444 Fortran Var(flag_dec_intrinsic_ints)
445 Enable kind-specific variants of integer intrinsic functions.
447 fdec-math
448 Fortran Var(flag_dec_math)
449 Enable legacy math intrinsics for compatibility.
451 fdec-structure
452 Fortran Var(flag_dec_structure)
453 Enable support for DEC STRUCTURE/RECORD.
455 fdec-static
456 Fortran Var(flag_dec_static)
457 Enable DEC-style STATIC and AUTOMATIC attributes.
459 fdefault-double-8
460 Fortran Var(flag_default_double)
461 Set the default double precision kind to an 8 byte wide type.
463 fdefault-integer-8
464 Fortran Var(flag_default_integer)
465 Set the default integer kind to an 8 byte wide type.
467 fdefault-real-8
468 Fortran Var(flag_default_real_8)
469 Set the default real kind to an 8 byte wide type.
471 fdefault-real-10
472 Fortran Var(flag_default_real_10)
473 Set the default real kind to an 10 byte wide type.
475 fdefault-real-16
476 Fortran Var(flag_default_real_16)
477 Set the default real kind to an 16 byte wide type.
479 fdollar-ok
480 Fortran Var(flag_dollar_ok)
481 Allow dollar signs in entity names.
483 fdump-core
484 Fortran Ignore
485 Does nothing. Preserved for backward compatibility.
487 fdump-fortran-original
488 Fortran Var(flag_dump_fortran_original)
489 Display the code tree after parsing.
491 fdump-fortran-optimized
492 Fortran Var(flag_dump_fortran_optimized)
493 Display the code tree after front end optimization.
495 fdump-parse-tree
496 Fortran Alias(fdump-fortran-original)
497 Display the code tree after parsing; deprecated option.
499 fexternal-blas
500 Fortran Var(flag_external_blas)
501 Specify that an external BLAS library should be used for matmul calls on large-size arrays.
503 ff2c
504 Fortran Var(flag_f2c)
505 Use f2c calling convention.
507 ffixed-form
508 Fortran RejectNegative
509 Assume that the source file is fixed form.
511 ftest-forall-temp
512 Fortran Var(flag_test_forall_temp) Init(0)
513 Force creation of temporary to test infrequently-executed forall code.
515 finteger-4-integer-8
516 Fortran RejectNegative Var(flag_integer4_kind,8)
517 Interpret any INTEGER(4) as an INTEGER(8).
519 fintrinsic-modules-path
520 Fortran RejectNegative Separate
521 Specify where to find the compiled intrinsic modules.
523 fintrinsic-modules-path=
524 Fortran RejectNegative Joined
525 Specify where to find the compiled intrinsic modules.
527 ffixed-line-length-none
528 Fortran RejectNegative Var(flag_fixed_line_length,0)
529 Allow arbitrary character line width in fixed mode.
531 ffixed-line-length-
532 Fortran RejectNegative Joined UInteger Var(flag_fixed_line_length) Init(72)
533 -ffixed-line-length-<n> Use n as character line width in fixed mode.
535 ffpe-trap=
536 Fortran RejectNegative JoinedOrMissing
537 -ffpe-trap=[...]        Stop on following floating point exceptions.
539 ffpe-summary=
540 Fortran RejectNegative JoinedOrMissing
541 -ffpe-summary=[...]     Print summary of floating point exceptions.
543 ffree-form
544 Fortran RejectNegative
545 Assume that the source file is free form.
547 ffree-line-length-none
548 Fortran RejectNegative Var(flag_free_line_length,0)
549 Allow arbitrary character line width in free mode.
551 ffree-line-length-
552 Fortran RejectNegative Joined UInteger Var(flag_free_line_length) Init(132)
553 -ffree-line-length-<n>  Use n as character line width in free mode.
555 ffrontend-loop-interchange
556 Fortran Var(flag_frontend_loop_interchange) Init(-1)
557 Try to interchange loops if profitable.
559 ffrontend-optimize
560 Fortran Var(flag_frontend_optimize) Init(-1)
561 Enable front end optimization.
563 fimplicit-none
564 Fortran Var(flag_implicit_none)
565 Specify that no implicit typing is allowed, unless overridden by explicit IMPLICIT statements.
567 finit-character=
568 Fortran RejectNegative Joined UInteger
569 -finit-character=<n>    Initialize local character variables to ASCII value n.
571 finit-derived
572 Fortran Var(flag_init_derived)
573 Initialize components of derived type variables according to other init flags.
575 finit-integer=
576 Fortran RejectNegative Joined
577 -finit-integer=<n>      Initialize local integer variables to n.
579 finit-local-zero
580 Fortran
581 Initialize local variables to zero (from g77).
583 finit-logical=
584 Fortran RejectNegative Joined
585 -finit-logical=<true|false>     Initialize local logical variables.
587 finit-real=
588 Fortran RejectNegative ToLower Joined Enum(gfc_init_local_real) Var(flag_init_real) Init(GFC_INIT_REAL_OFF)
589 -finit-real=<zero|snan|nan|inf|-inf>    Initialize local real variables.
591 Enum
592 Name(gfc_init_local_real) Type(enum gfc_init_local_real) UnknownError(Unrecognized option to floating-point init value: %qs)
594 EnumValue
595 Enum(gfc_init_local_real) String(zero) Value(GFC_INIT_REAL_ZERO)
597 EnumValue
598 Enum(gfc_init_local_real) String(snan) Value(GFC_INIT_REAL_SNAN)
600 EnumValue
601 Enum(gfc_init_local_real) String(nan) Value(GFC_INIT_REAL_NAN)
603 EnumValue
604 Enum(gfc_init_local_real) String(inf) Value(GFC_INIT_REAL_INF)
606 EnumValue
607 Enum(gfc_init_local_real) String(-inf) Value(GFC_INIT_REAL_NEG_INF)
609 finline-matmul-limit=
610 Fortran RejectNegative Joined UInteger Var(flag_inline_matmul_limit) Init(-1)
611 -finline-matmul-limit=<n>       Specify the size of the largest matrix for which matmul will be inlined.
613 fmax-array-constructor=
614 Fortran RejectNegative Joined UInteger Var(flag_max_array_constructor) Init(65535)
615 -fmax-array-constructor=<n>     Maximum number of objects in an array constructor.
617 fmax-identifier-length=
618 Fortran RejectNegative Joined UInteger
619 -fmax-identifier-length=<n>     Maximum identifier length.
621 fmax-subrecord-length=
622 Fortran RejectNegative Joined UInteger Var(flag_max_subrecord_length)
623 -fmax-subrecord-length=<n>      Maximum length for subrecords.
625 fmax-stack-var-size=
626 Fortran RejectNegative Joined UInteger Var(flag_max_stack_var_size) Init(-2)
627 -fmax-stack-var-size=<n>        Size in bytes of the largest array that will be put on the stack.
629 fstack-arrays
630 Fortran Var(flag_stack_arrays) Init(-1)
631 Put all local arrays on stack.
633 fmodule-private
634 Fortran Var(flag_module_private)
635 Set default accessibility of module entities to PRIVATE.
637 fopenacc
638 Fortran LTO
639 ; Documented in C
641 fopenacc-dim=
642 Fortran LTO Joined Var(flag_openacc_dims)
643 ; Documented in C
645 fopenmp
646 Fortran LTO
647 ; Documented in C
649 fopenmp-simd
650 Fortran
651 ; Documented in C
653 fpack-derived
654 Fortran Var(flag_pack_derived)
655 Try to lay out derived types as compactly as possible.
657 fpreprocessed
658 Fortran
659 ; Documented in C
661 fprotect-parens
662 Fortran Var(flag_protect_parens) Init(-1)
663 Protect parentheses in expressions.
665 frange-check
666 Fortran Var(flag_range_check) Init(1)
667 Enable range checking during compilation.
669 freal-4-real-8
670 Fortran RejectNegative Var(flag_real4_kind,8)
671 Interpret any REAL(4) as a REAL(8).
673 freal-4-real-10
674 Fortran RejectNegative Var(flag_real4_kind,10)
675 Interpret any REAL(4) as a REAL(10).
677 freal-4-real-16
678 Fortran RejectNegative Var(flag_real4_kind,16)
679 Interpret any REAL(4) as a REAL(16).
681 freal-8-real-4
682 Fortran RejectNegative Var(flag_real8_kind,4)
683 Interpret any REAL(8) as a REAL(4).
685 freal-8-real-10
686 Fortran RejectNegative Var(flag_real8_kind,10)
687 Interpret any REAL(8) as a REAL(10).
689 freal-8-real-16
690 Fortran RejectNegative Var(flag_real8_kind,16)
691 Interpret any REAL(8) as a REAL(16).
693 frealloc-lhs
694 Fortran Var(flag_realloc_lhs) Init(-1)
695 Reallocate the LHS in assignments.
697 frecord-marker=4
698 Fortran RejectNegative Var(flag_record_marker,4)
699 Use a 4-byte record marker for unformatted files.
701 frecord-marker=8
702 Fortran RejectNegative Var(flag_record_marker,8)
703 Use an 8-byte record marker for unformatted files.
705 frecursive
706 Fortran Var(flag_recursive)
707 Allocate local variables on the stack to allow indirect recursion.
709 frepack-arrays
710 Fortran Var(flag_repack_arrays)
711 Copy array sections into a contiguous block on procedure entry.
713 fcoarray=
714 Fortran RejectNegative Joined Enum(gfc_fcoarray) Var(flag_coarray) Init(GFC_FCOARRAY_NONE)
715 -fcoarray=<none|single|lib>     Specify which coarray parallelization should be used.
717 Enum
718 Name(gfc_fcoarray) Type(enum gfc_fcoarray) UnknownError(Unrecognized option: %qs)
720 EnumValue
721 Enum(gfc_fcoarray) String(none) Value(GFC_FCOARRAY_NONE)
723 EnumValue
724 Enum(gfc_fcoarray) String(single) Value(GFC_FCOARRAY_SINGLE)
726 EnumValue
727 Enum(gfc_fcoarray) String(lib) Value(GFC_FCOARRAY_LIB)
729 fcheck=
730 Fortran RejectNegative JoinedOrMissing
731 -fcheck=[...]   Specify which runtime checks are to be performed.
733 fsecond-underscore
734 Fortran Var(flag_second_underscore) Init(-1)
735 Append a second underscore if the name already contains an underscore.
737 fshort-enums
738 Fortran Var(flag_short_enums)
739 ; Documented in C
741 fsign-zero
742 Fortran Var(flag_sign_zero) Init(1)
743 Apply negative sign to zero values.
745 funderscoring
746 Fortran Var(flag_underscoring) Init(1)
747 Append underscores to externally visible names.
749 fwhole-file
750 Fortran Ignore
751 Does nothing.  Preserved for backward compatibility.
753 fworking-directory
754 Fortran
755 ; Documented in C
757 idirafter
758 Fortran Joined Separate
759 ; Documented in C
761 imultilib
762 Fortran Joined Separate
763 ; Documented in C
765 iprefix
766 Fortran Joined Separate
767 ; Documented in C
769 iquote
770 Fortran Joined Separate
771 ; Documented in C
773 isysroot
774 Fortran Joined Separate
775 ; Documented in C
777 isystem
778 Fortran Joined Separate
779 ; Documented in C
781 nostdinc
782 Fortran
783 ; Documented in C
786 Fortran Joined Separate
787 ; Documented in common.opt
789 static-libgfortran
790 Fortran
791 Statically link the GNU Fortran helper library (libgfortran).
793 std=f2003
794 Fortran
795 Conform to the ISO Fortran 2003 standard.
797 std=f2008
798 Fortran
799 Conform to the ISO Fortran 2008 standard.
801 std=f2008ts
802 Fortran
803 Conform to the ISO Fortran 2008 standard including TS 29113.
805 std=f2018
806 Fortran
807 Conform to the ISO Fortran 2018 standard.
809 std=f95
810 Fortran
811 Conform to the ISO Fortran 95 standard.
813 std=gnu
814 Fortran
815 Conform to nothing in particular.
817 std=legacy
818 Fortran
819 Accept extensions to support legacy code.
821 undef
822 Fortran
823 ; Documented in C
826 Fortran
827 ; Documented in C
829 ; This comment is to ensure we retain the blank line above.