# Compiler options comparison This document catalogs the options processed by Flang's peers/competitors. Much of the document is taken up by a set of tables that list the options categorized into different topics. Some of the table headings link to more information about the contents of the tables. For example, the table on **Standards conformance** options links to notes on Standards conformance. **There's also important information in the ___[Appendix section](#appendix)___ near the end of the document on how this data was gathered and what ___is___ and ___is not___ included in this document.** Note that compilers may support language features without having an option for them. Such cases are frequently, but not always noted in this document. ## Categorization of Options
| Standards conformance | ||||||
| Option | Cray | GNU | IBM | Intel | PGI | Classic Flang |
| Overall conformance | en,
eN |
std=level | qlanglvl, qsaa | stand level | Mstandard | Mstandard |
| Compatibility with previous standards or implementations | N/A | fdec,
fall-intrinsics |
qxlf77,
qxlf90, qxlf2003, qxfl2008, qport |
f66,
f77rtl, fpscomp, Intconstant, nostandard-realloc-lhs, standard-semantics, assume nostd_intent_in, assume nostd_value, assume norealloc_lhs |
Mallocatable=95|03 | Mallocatable=95|03 |
| Source format | ||||||
| Option | Cray | GNU | IBM | Intel | PGI | Classic Flang |
| Fixed or free source | f free,
f fixed |
ffree-form,
ffixed-form |
qfree,
qfixed |
fixed,
free |
Mfree,
Mfixed |
Mfreeform,
Mfixed |
| Source line length | N col | ffixed-line-length-n,
ffree-line-length-n |
qfixed=n | extend-source [size] | Mextend | Mextend |
| Column 1 comment specifier | ed | fd-lines-as-code,
fd-lines-as-comments |
D,
qdlines, qxlines |
d-lines | Mdlines | N/A |
| Don't treat CR character as a line terminator | NA | N/A | qnocr | N/A | N/A | N/A |
| Source file naming | N/A | N/A | qsuffix | extfor,
Tf filename |
N/A | N/A |
| Names, Literals, and other tokens | ||||||
| Option | Cray | GNU | IBM | Intel | PGI | Classic Flang |
| Max identifier length | N/A | fmax-identifier-length=n | N/A | N/A | N/A | N/A |
| "$" in symbol names | N/A | fdollar-ok | default | default | N/A | N/A |
| Allow names with leading "_" | eQ | N/A | N/A | N/A | N/A | N/A |
| Specify name format | N/A | N/A | U | names=keyword | Mupcase | NA |
| Escapes in literals | N/A | fbackslash | qescape | assume bscc | Mbackslash | Mbackslash |
| Allow multibyte characters in strings | N/A | N/A | qmbcs | N/A | N/A | N/A |
| Create null terminated strings | N/A | N/A | qnullterm | N/A | N/A | N/A |
| Character to use for "$" | N/A | N/A | N/A | N/A | Mdollar,char | |
| Allow PARAMETER statements without parentheses | N/A | N/A | N/A | altparam | N?A | N/A |
| DO loop handling | ||||||
| Option | Cray | GNU | IBM | Intel | PGI | Classic Flang |
| One trip DO loops | ej | N/A | 1,
qonetrip |
f66 | Monetrip | N/A |
| Allow branching into loops | eg | N/A | N/A | N/A | N/A | N/A |
| REAL, DOUBLE PRECISION, and COMPLEX Data | ||||||
| Option | Cray | GNU | IBM | Intel | PGI | Classic Flang |
| Default REAL size | s real32,
s real64, s default32, s default64 |
fdefault-real-[8|10|16] | qrealsize=[4|8] | real-size [32|64|128] | r[4|8] | r8,
fdefault-real-8 |
| Default DOUBLE PRECISION size | ep | fdefault-double-8 | N/A | double-size[64|128] | N/A | N/A |
| Make real constants DOUBLE PRECISION | N/A | N/A | qdpc | N/A | N/A | N/A |
| Promote or demote REAL type sizes | N/A | freal-[4|8]-real[4|8|10|16] | qautodbl=size | N/A | Mr8,
Mr8intrinsics |
N/A |
| Rounding mode | N/A | N/A | qieee | assume std_minus0_rounding | N/A | N/A |
| Treatment of -0.0 | N/A | N/A | N/A | assume minus0 | ||
| INTEGER and LOGICAL Data | ||||||
| Option | Cray | GNU | IBM | Intel | PGI | Classic Flang |
| Default INTEGER size | s integer32,
s integer64, s default32, s default64 |
fdefault-integer-8 | qintsize=[2|4|8] | integer-size [32|64|128] | I[2|4|8],
Mi4, Mnoi4 |
i8,
fdefault-integer-8 |
| Promote INTEGER sizes | N/A | finteger-4-integer-8 | N/A | N/A | N/A | N/A |
| Enable 8 and 16 bit INTEGER and LOGICALS | eh | N/A | N/A | N/A | N/A | N/A |
| Change how the compiler treats LOGICAL | N/A | N/A | N/A | N/A | Munixlogical | |
| Treatment of numeric constants as arguments | N/A | N/A | qxlf77 oldboz | assume old_boz | N/A | N/A |
| Treatment of assignment between numerics and logicals | N/A | N/A | N/A | assume old_logical_assign | N/A | N/A |
| CHARACTER and Pointer Data | ||||||
| Option | Cray | GNU | IBM | Intel | PGI | Classic Flang |
| Use bytes for pointer arithmetic | s byte_pointer | N/A | N/A | N/A | N/A | N/A |
| Use words for pointer arithmetic | S word_pointer | N/A | N/A | N/A | N/A | N/A |
| Allow character constants for typeless constants | N/A | N/A | qctyplss | N/A | N/A | N/A |
| Data types and allocation | ||||||
| Option | Cray | GNU | IBM | Intel | PGI | Classic Flang |
| Default to IMPLICIT NONE | eI | fimplicit-none | u, qundef | warn declarations | Mdclchk | N/A |
| Enable DEC STRUCTURE extensions | N/A | fdec-structure | N/A | N/A | default | N/A |
| Enable Cray pointers | default | fcray-pointer | Default (near equivalent) | Default (near equivalent) | Mcray | N/A |
| Allow bitwise logical operations on numeric | ee | N/A | qintlog | N/A | N/A | N/A |
| Allow DEC STATIC and AUTOMATIC declarations | default | fdec-static | Default, see IMPLICIT STATIC and IMPLICIT AUTOMATIC | Default, see AUTOMATIC and STATIC | Default | N/A |
| Allocate variables to static storage | ev | fno-automatic | qsave | save,
noauto |
Mnorecursive,
Msave |
N/A |
| Compile procedures as if RECURSIVE | eR | frecursive | q recur | assume recursion,
recursive |
Mrecursive | Mrecursive |
| Arrays | ||||||
| Option | Cray | GNU | IBM | Intel | PGI | Classic Flang |
| Enable coarrays | h caf | fcoarray=key | N/A | coarray[=keyword] | N/A | N/A |
| Contiguous array pointers | h contiguous | N/A | qassert=contig | assume contiguous_pointer | N/A | N/A |
| Contiguous assumed shape dummy arguments | h contiguous_assumed_shape | frepack-arrays | qassert=contig | assume contiguous_assumed_shape | N/A | N/A |
| OpenACC, OpenMP, and CUDA | ||||||
| Option | Cray | GNU | IBM | Intel | PGI | Classic Flang |
| Enable OpenACC | h acc | fopenacc | N/A | N/A | acc | N/A |
| Enable OpenMP | h omp | fopenmp | qswapomp | qopenmp,
qopenmp-lib, qopenmp-link, qopenmp-offload, qopenmp-simd, qopenmp-stubs, qopenmp-threadprivate |
mp,
Mcuda |
-mp |
| Miscellaneous | ||||||
| Option | Cray | GNU | IBM | Intel | PGI | Classic Flang |
| Disable compile time range checking | N/A | fno-range-check | N/A | N/A | N/A | N/A |
| Disable call site checking | dC | N/A | N/A | N/A | N/A | N/A |
| Warn for bad call checking | eb | N/A | N/A | N/A | N/A | N/A |
| Set default accessibility of module entities to PRIVATE | N/A | fmodule-private | N/A | N/A | N/A | N/A |
| Force FORALL to use temp | N/A | ftest-forall-temp | N/A | N/A | N/A | N/A |