| // Test overriding warnings about complex range. |
| // range.c tests the settings of -complex-range=, and this test covers |
| // all warnings related to complex range. |
| |
| // Clang options related to complex range are as follows: |
| // -f[no-]fast-math |
| // -f[no-]cx-limited-range |
| // -f[no-]cx-fortran-rules |
| // -fcomplex-arithmetic=[full|improved|promoted|basic] |
| // -ffp-model=[strict|precise|fast|aggressive] |
| |
| // Emit warnings about overriding when options implying different |
| // complex ranges are specified. However, warnings are not emitted in |
| // the following cases: |
| // (a) When the positive/negative form or a different value of the same |
| // option is specified. |
| // Example: |
| // `-ffast-math -fno-fast-math` |
| // `-fcx-limited-range -fno-cx-limited-range` |
| // `-fcx-fortran-rules -fno-cx-fortran-rules` |
| // `-fcomplex-arithmetic=full -fcomplex-arithmetic=improved` |
| // `-ffp-model=strict -ffp-model=aggressive` |
| // |
| // (b) When -ffp-model= is overridden by -f[no-]fast-math. |
| // Example: |
| // `-ffp-model=fast -fno-fast-math` |
| // `-ffp-model=strict -ffast-math` |
| |
| |
| // RUN: %clang -### -Werror -ffast-math -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -ffast-math -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffast-math -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOLIM-OVERRIDING,FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffast-math -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FORT-OVERRIDING,FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffast-math -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFORT-OVERRIDING,FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffast-math -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-FULL-OVERRIDING,FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffast-math -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-IMPROVED-OVERRIDING,FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffast-math -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-PROMOTED-OVERRIDING,FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -ffast-math -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffast-math -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-STRICT-OVERRIDING,FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffast-math -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-PRECISE-OVERRIDING,FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffast-math -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-FAST-OVERRIDING,FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -ffast-math -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-fast-math -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcx-limited-range -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcx-limited-range -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFAST-OVERRIDING,LIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcx-limited-range -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcx-limited-range -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FORT-OVERRIDING,LIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-limited-range -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFORT-OVERRIDING,LIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-limited-range -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-FULL-OVERRIDING,LIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-limited-range -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-IMPROVED-OVERRIDING,LIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-limited-range -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-PROMOTED-OVERRIDING,LIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcx-limited-range -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcx-limited-range -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-STRICT-OVERRIDING,LIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-limited-range -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-PRECISE-OVERRIDING,LIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-limited-range -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-FAST-OVERRIDING,LIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcx-limited-range -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fno-cx-limited-range -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FAST-OVERRIDING,NOLIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-limited-range -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-limited-range -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fno-cx-limited-range -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FORT-OVERRIDING,NOLIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-limited-range -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-limited-range -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fno-cx-limited-range -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-IMPROVED-OVERRIDING,NOLIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fno-cx-limited-range -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-PROMOTED-OVERRIDING,NOLIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fno-cx-limited-range -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-BASIC-OVERRIDING,NOLIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-limited-range -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-limited-range -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fno-cx-limited-range -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-FAST-OVERRIDING,NOLIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fno-cx-limited-range -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-AGGRESSIVE-OVERRIDING,NOLIM-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-fortran-rules -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FAST-OVERRIDING,FORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-fortran-rules -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFAST-OVERRIDING,FORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-fortran-rules -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=LIM-OVERRIDING,FORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-fortran-rules -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOLIM-OVERRIDING,FORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcx-fortran-rules -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcx-fortran-rules -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-FULL-OVERRIDING,FORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcx-fortran-rules -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcx-fortran-rules -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-PROMOTED-OVERRIDING,FORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-fortran-rules -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-BASIC-OVERRIDING,FORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-fortran-rules -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-STRICT-OVERRIDING,FORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-fortran-rules -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-PRECISE-OVERRIDING,FORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-fortran-rules -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-FAST-OVERRIDING,FORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcx-fortran-rules -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-AGGRESSIVE-OVERRIDING,FORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fno-cx-fortran-rules -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FAST-OVERRIDING,NOFORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-fortran-rules -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fno-cx-fortran-rules -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=LIM-OVERRIDING,NOFORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-fortran-rules -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-fortran-rules -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-fortran-rules -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fno-cx-fortran-rules -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-IMPROVED-OVERRIDING,NOFORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fno-cx-fortran-rules -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-PROMOTED-OVERRIDING,NOFORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fno-cx-fortran-rules -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-BASIC-OVERRIDING,NOFORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-fortran-rules -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fno-cx-fortran-rules -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fno-cx-fortran-rules -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-FAST-OVERRIDING,NOFORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fno-cx-fortran-rules -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-AGGRESSIVE-OVERRIDING,NOFORT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=full -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FAST-OVERRIDING,ARITH-FULL-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=full -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=full -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=LIM-OVERRIDING,ARITH-FULL-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=full -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=full -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FORT-OVERRIDING,ARITH-FULL-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=full -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=full -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=full -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=full -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=full -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=full -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=full -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-FAST-OVERRIDING,ARITH-FULL-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=full -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-AGGRESSIVE-OVERRIDING,ARITH-FULL-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=improved -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FAST-OVERRIDING,ARITH-IMPROVED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=improved -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFAST-OVERRIDING,ARITH-IMPROVED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=improved -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=LIM-OVERRIDING,ARITH-IMPROVED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=improved -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOLIM-OVERRIDING,ARITH-IMPROVED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=improved -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=improved -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFORT-OVERRIDING,ARITH-IMPROVED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=improved -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=improved -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=improved -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=improved -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-STRICT-OVERRIDING,ARITH-IMPROVED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=improved -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-PRECISE-OVERRIDING,ARITH-IMPROVED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=improved -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-FAST-OVERRIDING,ARITH-IMPROVED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=improved -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-AGGRESSIVE-OVERRIDING,ARITH-IMPROVED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=promoted -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FAST-OVERRIDING,ARITH-PROMOTED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=promoted -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFAST-OVERRIDING,ARITH-PROMOTED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=promoted -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=LIM-OVERRIDING,ARITH-PROMOTED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=promoted -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOLIM-OVERRIDING,ARITH-PROMOTED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=promoted -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FORT-OVERRIDING,ARITH-PROMOTED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=promoted -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFORT-OVERRIDING,ARITH-PROMOTED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=promoted -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=promoted -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=promoted -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=promoted -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-STRICT-OVERRIDING,ARITH-PROMOTED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=promoted -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-PRECISE-OVERRIDING,ARITH-PROMOTED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=promoted -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=promoted -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-AGGRESSIVE-OVERRIDING,ARITH-PROMOTED-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=basic -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=basic -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFAST-OVERRIDING,ARITH-BASIC-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=basic -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=basic -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOLIM-OVERRIDING,ARITH-BASIC-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=basic -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FORT-OVERRIDING,ARITH-BASIC-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=basic -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFORT-OVERRIDING,ARITH-BASIC-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=basic -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=basic -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=basic -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=basic -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-STRICT-OVERRIDING,ARITH-BASIC-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=basic -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-PRECISE-OVERRIDING,ARITH-BASIC-OVERRIDDEN %s |
| |
| // RUN: %clang -### -fcomplex-arithmetic=basic -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=MODEL-FAST-OVERRIDING,ARITH-BASIC-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -fcomplex-arithmetic=basic -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=strict -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=strict -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=strict -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=LIM-OVERRIDING,MODEL-STRICT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=strict -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=strict -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FORT-OVERRIDING,MODEL-STRICT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=strict -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=strict -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=strict -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-IMPROVED-OVERRIDING,MODEL-STRICT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=strict -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-PROMOTED-OVERRIDING,MODEL-STRICT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=strict -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-BASIC-OVERRIDING,MODEL-STRICT-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=strict -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=strict -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=strict -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=precise -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=precise -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=precise -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=LIM-OVERRIDING,MODEL-PRECISE-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=precise -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=precise -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FORT-OVERRIDING,MODEL-PRECISE-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=precise -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=precise -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=precise -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-IMPROVED-OVERRIDING,MODEL-PRECISE-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=precise -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-PROMOTED-OVERRIDING,MODEL-PRECISE-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=precise -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-BASIC-OVERRIDING,MODEL-PRECISE-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=precise -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=precise -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=precise -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=fast -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=fast -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=fast -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=LIM-OVERRIDING,MODEL-FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=fast -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOLIM-OVERRIDING,MODEL-FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=fast -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FORT-OVERRIDING,MODEL-FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=fast -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFORT-OVERRIDING,MODEL-FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=fast -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-FULL-OVERRIDING,MODEL-FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=fast -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-IMPROVED-OVERRIDING,MODEL-FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=fast -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=fast -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-BASIC-OVERRIDING,MODEL-FAST-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=fast -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=fast -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=fast -ffp-model=aggressive -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=aggressive -ffast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=aggressive -fno-fast-math -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=aggressive -fcx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=aggressive -fno-cx-limited-range -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOLIM-OVERRIDING,MODEL-AGGRESSIVE-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=aggressive -fcx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=FORT-OVERRIDING,MODEL-AGGRESSIVE-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=aggressive -fno-cx-fortran-rules -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NOFORT-OVERRIDING,MODEL-AGGRESSIVE-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=aggressive -fcomplex-arithmetic=full -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-FULL-OVERRIDING,MODEL-AGGRESSIVE-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=aggressive -fcomplex-arithmetic=improved -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-IMPROVED-OVERRIDING,MODEL-AGGRESSIVE-OVERRIDDEN %s |
| |
| // RUN: %clang -### -ffp-model=aggressive -fcomplex-arithmetic=promoted -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=ARITH-PROMOTED-OVERRIDING,MODEL-AGGRESSIVE-OVERRIDDEN %s |
| |
| // RUN: %clang -### -Werror -ffp-model=aggressive -fcomplex-arithmetic=basic -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=aggressive -ffp-model=strict -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=aggressive -ffp-model=precise -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| // RUN: %clang -### -ffp-model=aggressive -ffp-model=fast -c %s 2>&1 \ |
| // RUN: | FileCheck --check-prefixes=NO-OVR-WARN %s |
| |
| |
| // NO-OVR-WARN-NOT: [-Woverriding-complex-range] |
| |
| // FAST-OVERRIDING: warning: '-ffast-math' sets complex range to "basic" |
| // NOFAST-OVERRIDING: warning: '-fno-fast-math' sets complex range to "none" |
| // LIM-OVERRIDING: warning: '-fcx-limited-range' sets complex range to "basic" |
| // NOLIM-OVERRIDING: warning: '-fno-cx-limited-range' sets complex range to "full" |
| // FORT-OVERRIDING: warning: '-fcx-fortran-rules' sets complex range to "improved" |
| // NOFORT-OVERRIDING: warning: '-fno-cx-fortran-rules' sets complex range to "full" |
| // ARITH-FULL-OVERRIDING: warning: '-fcomplex-arithmetic=full' sets complex range to "full" |
| // ARITH-IMPROVED-OVERRIDING: warning: '-fcomplex-arithmetic=improved' sets complex range to "improved" |
| // ARITH-PROMOTED-OVERRIDING: warning: '-fcomplex-arithmetic=promoted' sets complex range to "promoted" |
| // ARITH-BASIC-OVERRIDING: warning: '-fcomplex-arithmetic=basic' sets complex range to "basic" |
| // MODEL-STRICT-OVERRIDING: warning: '-ffp-model=strict' sets complex range to "full" |
| // MODEL-PRECISE-OVERRIDING: warning: '-ffp-model=precise' sets complex range to "full" |
| // MODEL-FAST-OVERRIDING: warning: '-ffp-model=fast' sets complex range to "promoted" |
| // MODEL-AGGRESSIVE-OVERRIDING: warning: '-ffp-model=aggressive' sets complex range to "basic" |
| |
| // FAST-OVERRIDDEN: overriding the setting of "basic" that was implied by '-ffast-math' [-Woverriding-complex-range] |
| // LIM-OVERRIDDEN: overriding the setting of "basic" that was implied by '-fcx-limited-range' [-Woverriding-complex-range] |
| // NOLIM-OVERRIDDEN: overriding the setting of "full" that was implied by '-fno-cx-limited-range' [-Woverriding-complex-range] |
| // FORT-OVERRIDDEN: overriding the setting of "improved" that was implied by '-fcx-fortran-rules' [-Woverriding-complex-range] |
| // NOFORT-OVERRIDDEN: overriding the setting of "full" that was implied by '-fno-cx-fortran-rules' [-Woverriding-complex-range] |
| // ARITH-FULL-OVERRIDDEN: overriding the setting of "full" that was implied by '-fcomplex-arithmetic=full' [-Woverriding-complex-range] |
| // ARITH-IMPROVED-OVERRIDDEN: overriding the setting of "improved" that was implied by '-fcomplex-arithmetic=improved' [-Woverriding-complex-range] |
| // ARITH-PROMOTED-OVERRIDDEN: overriding the setting of "promoted" that was implied by '-fcomplex-arithmetic=promoted' [-Woverriding-complex-range] |
| // ARITH-BASIC-OVERRIDDEN: overriding the setting of "basic" that was implied by '-fcomplex-arithmetic=basic' [-Woverriding-complex-range] |
| // MODEL-STRICT-OVERRIDDEN: overriding the setting of "full" that was implied by '-ffp-model=strict' [-Woverriding-complex-range] |
| // MODEL-PRECISE-OVERRIDDEN: overriding the setting of "full" that was implied by '-ffp-model=precise' [-Woverriding-complex-range] |
| // MODEL-FAST-OVERRIDDEN: overriding the setting of "promoted" that was implied by '-ffp-model=fast' [-Woverriding-complex-range] |
| // MODEL-AGGRESSIVE-OVERRIDDEN: overriding the setting of "basic" that was implied by '-ffp-model=aggressive' [-Woverriding-complex-range] |