# diag, Qdiag

Controls the display of diagnostic information during compilation.

## Syntax

Linux and macOS: | -diag-type=diag-list

Windows: | /Qdiag-type:diag-list

## Arguments

type | Is an action to perform on diagnostics. Possible values are:
enable | Enables a diagnostic message or a group of messages. If you specify -diag-enable=all (Linux* and macOS*) or /Qdiag-enable:all (Windows*), all diagnostic messages shown in diag-list are enabled.
disable | Disables a diagnostic message or a group of messages. If you specify -diag-disable=all (Linux* and macOS*) or /Qdiag-disable:all (Windows*), all diagnostic messages shown in diag-list are disabled.
error | Tells the compiler to change diagnostics to errors.
warning | Tells the compiler to change diagnostics to warnings.
remark | Tells the compiler to change diagnostics to remarks (comments).
diag-list | Is a diagnostic group or ID value. Possible values are:
driver | Specifies diagnostic messages issued by the compiler driver.
port-linux | Specifies diagnostic messages for language features that may cause errors when porting to Linux* systems. This diagnostic group is only available on Windows* systems.
port-win | Specifies diagnostic messages for GNU extensions that may cause errors when porting to Windows. This diagnostic group is only available on Linux and macOS* systems.
thread | Specifies diagnostic messages that help in thread-enabling a program.
vec | Specifies diagnostic messages issued by the vectorizer.
par | Specifies diagnostic messages issued by the auto-parallelizer (parallel optimizer).
openmp | Specifies diagnostic messages issued by the OpenMP* parallelizer.
warn | Specifies diagnostic messages that have a "warning" severity level.
error | Specifies diagnostic messages that have an "error" severity level.
remark | Specifies diagnostic messages that are remarks or comments.
cpu-dispatch | Specifies the CPU dispatch remarks for diagnostic messages. These remarks are enabled by default.
id[,id,...] | Specifies the ID number of one or more messages. If you specify more than one message number, they must be separated by commas. There can be no intervening white space between each id.
tag[,tag,...] | Specifies the mnemonic name of one or more messages. If you specify more than one mnemonic name, they must be separated by commas. There can be no intervening white space between each tag.
The diagnostic messages generated can be affected by certain options, such as [Q]x, /arch (Windows) or -m (Linux and macOS*).

## Default

OFF | The compiler issues certain diagnostic messages by default.

## Description

This option controls the display of diagnostic information during compilation. Diagnostic messages are output to stderr unless the [Q]diag-file option is specified.

To control the diagnostic information reported by the vectorizer, use options [q or Q]opt-report and [q or Q]opt-report-phase, phase vec.

To control the diagnostic information reported by the auto-parallelizer, use options [q or Q]opt-report and [q or Q]opt-report-phase, phase par.

## IDE Equivalent

Visual Studio: Diagnostics > Disable Specific Diagnostics (/Qdiag-disable:id)

Advanced > Disable Specific Warnings (/Qdiag-disable)

Eclipse: Compilation Diagnostics > Disable Specific Diagnostics

Xcode: Diagnostics > Disable Specific Diagnostics

## Alternate Options

enable vec | Linux and macOS*: -qopt-report; -qopt-report -qopt-report-phase=vec Windows: /Qopt-report; /Qopt-report /Qopt-report-phase:vec
disable vec | Linux and macOS*: -qopt-report=0 -qopt-report-phase=vec Windows: /Qopt-report:0 /Qopt-report-phase:vec
enable par | Linux and macOS*: -qopt-report; -qopt-report -qopt-report-phase=par Windows: /Qopt-report; /Qopt-report /Qopt-report-phase:par
disable par | Linux and macOS*: -qopt-report=0 -qopt-report-phase=par Windows: /Qopt-report:0 /Qopt-report-phase:par

## Example

The following example shows how to enable diagnostic IDs 117, 230 and 450:

    -diag-enable=117,230,450     ! Linux and macOS* systems
    /Qdiag-enable:117,230,450    ! Windows systems

The following example shows how to change vectorizer diagnostic messages to warnings:

    -diag-enable=vec -diag-warning=vec      ! Linux and macOS* systems
    /Qdiag-enable:vec /Qdiag-warning:vec    ! Windows systems

Note that you need to enable the vectorizer diagnostics before you can change them to warnings.

The following example shows how to disable all auto-parallelizer diagnostic messages:

    -diag-disable=par     ! Linux and macOS* systems
    /Qdiag-disable:par    ! Windows systems

The following example shows how to change all diagnostic warnings and remarks to errors:

    -diag-error=warn,remark    ! Linux and macOS* systems
    /Qdiag-error:warn,remark   ! Windows systems

The following example shows how to get a list of only vectorization diagnostics:

    -diag-dump -diag-disable=all -diag-enable=vec        ! Linux and macOS* systems
    /Qdiag-dump /Qdiag-disable:all /Qdiag-enable:vec     ! Windows systems

Parent topic: Compiler Diagnostic Options

## See Also

diag-dump, Qdiag-dump compiler option
diag-id-numbers, Qdiag-id-numbers compiler option
diag-file, Qdiag-file compiler option
qopt-report, Qopt-report compiler option
x, Qx compiler option