1 // Test that the GCC fast-math floating point flags get lowered to the correct 2 // permutation of Clang frontend flags. This is non-trivial for a few reasons. 3 // First, the GCC flags have many different and surprising effects. Second, 4 // LLVM only supports three switches which is more coarse grained than GCC's 5 // support. 6 // 7 // Both of them use gcc driver for as. 8 // REQUIRES: clang-driver 9 // 10 // RUN: %clang -### -fno-honor-infinities -c %s 2>&1 \ 11 // RUN: | FileCheck --check-prefix=CHECK-NO-INFS %s 12 // infinites [sic] is a supported alternative spelling of infinities. 13 // RUN: %clang -### -fno-honor-infinites -c %s 2>&1 \ 14 // RUN: | FileCheck --check-prefix=CHECK-NO-INFS %s 15 // CHECK-NO-INFS: "-cc1" 16 // CHECK-NO-INFS: "-menable-no-infs" 17 // 18 // RUN: %clang -### -fno-fast-math -fno-honor-infinities -c %s 2>&1 \ 19 // RUN: | FileCheck --check-prefix=CHECK-NO-FAST-MATH-NO-INFS %s 20 // CHECK-NO-FAST-MATH-NO-INFS: "-cc1" 21 // CHECK-NO-FAST-MATH-NO-INFS: "-menable-no-infs" 22 // 23 // RUN: %clang -### -fno-honor-infinities -fno-fast-math -c %s 2>&1 \ 24 // RUN: | FileCheck --check-prefix=CHECK-NO-INFS-NO-FAST-MATH %s 25 // CHECK-NO-INFS-NO-FAST-MATH: "-cc1" 26 // CHECK-NO-INFS-NO-FAST-MATH-NOT: "-menable-no-infs" 27 // 28 // RUN: %clang -### -fno-signed-zeros -c %s 2>&1 \ 29 // RUN: | FileCheck --check-prefix=CHECK-NO-SIGNED-ZEROS %s 30 // CHECK-NO-SIGNED-ZEROS: "-cc1" 31 // CHECK-NO-SIGNED-ZEROS: "-fno-signed-zeros" 32 // 33 // RUN: %clang -### -fno-fast-math -fno-signed-zeros -c %s 2>&1 \ 34 // RUN: | FileCheck --check-prefix=CHECK-NO-FAST-MATH-NO-SIGNED-ZEROS %s 35 // CHECK-NO-FAST-MATH-NO-SIGNED-ZEROS: "-cc1" 36 // CHECK-NO-FAST-MATH-NO-SIGNED-ZEROS: "-fno-signed-zeros" 37 // 38 // RUN: %clang -### -fno-signed-zeros -fno-fast-math -c %s 2>&1 \ 39 // RUN: | FileCheck --check-prefix=CHECK-NO-SIGNED-ZEROS-NO-FAST-MATH %s 40 // CHECK-NO-SIGNED-ZEROS-NO-FAST-MATH: "-cc1" 41 // CHECK-NO-SIGNED-ZEROS-NO-FAST-MATH-NOT: "-fno-signed-zeros" 42 // 43 // RUN: %clang -### -freciprocal-math -c %s 2>&1 \ 44 // RUN: | FileCheck --check-prefix=CHECK-RECIPROCAL-MATH %s 45 // CHECK-RECIPROCAL-MATH: "-cc1" 46 // CHECK-RECIPROCAL-MATH: "-freciprocal-math" 47 // 48 // RUN: %clang -### -fno-fast-math -freciprocal-math -c %s 2>&1 \ 49 // RUN: | FileCheck --check-prefix=CHECK-NO-FAST-MATH-RECIPROCAL-MATH %s 50 // CHECK-NO-FAST-MATH-RECIPROCAL-MATH: "-cc1" 51 // CHECK-NO-FAST-MATH-RECIPROCAL-MATH: "-freciprocal-math" 52 // 53 // RUN: %clang -### -freciprocal-math -fno-fast-math -c %s 2>&1 \ 54 // RUN: | FileCheck --check-prefix=CHECK-RECIPROCAL-MATH-NO-FAST-MATH %s 55 // CHECK-RECIPROCAL-MATH-NO-FAST-MATH: "-cc1" 56 // CHECK-RECIPROCAL-MATH-NO-FAST-MATH-NOT: "-freciprocal-math" 57 // 58 // RUN: %clang -### -fno-honor-nans -c %s 2>&1 \ 59 // RUN: | FileCheck --check-prefix=CHECK-NO-NANS %s 60 // CHECK-NO-NANS: "-cc1" 61 // CHECK-NO-NANS: "-menable-no-nans" 62 // 63 // RUN: %clang -### -fno-fast-math -fno-honor-nans -c %s 2>&1 \ 64 // RUN: | FileCheck --check-prefix=CHECK-NO-FAST-MATH-NO-NANS %s 65 // CHECK-NO-FAST-MATH-NO-NANS: "-cc1" 66 // CHECK-NO-FAST-MATH-NO-NANS: "-menable-no-nans" 67 // 68 // RUN: %clang -### -fno-honor-nans -fno-fast-math -c %s 2>&1 \ 69 // RUN: | FileCheck --check-prefix=CHECK-NO-NANS-NO-FAST-MATH %s 70 // CHECK-NO-NANS-NO-FAST-MATH: "-cc1" 71 // CHECK-NO-NANS-NO-FAST-MATH-NOT: "-menable-no-nans" 72 // 73 // RUN: %clang -### -fmath-errno -c %s 2>&1 \ 74 // RUN: | FileCheck --check-prefix=CHECK-MATH-ERRNO %s 75 // CHECK-MATH-ERRNO: "-cc1" 76 // CHECK-MATH-ERRNO: "-fmath-errno" 77 // 78 // RUN: %clang -### -fmath-errno -fno-math-errno -c %s 2>&1 \ 79 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 80 // CHECK-NO-MATH-ERRNO: "-cc1" 81 // CHECK-NO-MATH-ERRNO-NOT: "-fmath-errno" 82 // 83 // Target defaults for -fmath-errno (reusing the above checks). 84 // RUN: %clang -### -target i686-unknown-linux -c %s 2>&1 \ 85 // RUN: | FileCheck --check-prefix=CHECK-MATH-ERRNO %s 86 // RUN: %clang -### -target i686-apple-darwin -c %s 2>&1 \ 87 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 88 // RUN: %clang -### -target x86_64-unknown-freebsd -c %s 2>&1 \ 89 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 90 // RUN: %clang -### -target x86_64-unknown-netbsd -c %s 2>&1 \ 91 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 92 // RUN: %clang -### -target x86_64-unknown-openbsd -c %s 2>&1 \ 93 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 94 // RUN: %clang -### -target x86_64-unknown-dragonfly -c %s 2>&1 \ 95 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 96 // RUN: %clang -### -target x86_64-fuchsia -c %s 2>&1 \ 97 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 98 // RUN: %clang -### -target x86_64-linux-android -c %s 2>&1 \ 99 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 100 // RUN: %clang -### -target amdgcn-amd-amdhsa -c %s 2>&1 \ 101 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 102 // RUN: %clang -### -target amdgcn-amd-amdpal -c %s 2>&1 \ 103 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 104 // RUN: %clang -### -target amdgcn-mesa-mesa3d -c %s 2>&1 \ 105 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 106 // 107 // Check that -ffast-math disables -fmath-errno, and -fno-fast-math merely 108 // preserves the target default. Also check various flag set operations between 109 // the two flags. (Resuses above checks.) 110 // RUN: %clang -### -ffast-math -c %s 2>&1 \ 111 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 112 // RUN: %clang -### -fmath-errno -ffast-math -c %s 2>&1 \ 113 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 114 // RUN: %clang -### -ffast-math -fmath-errno -c %s 2>&1 \ 115 // RUN: | FileCheck --check-prefix=CHECK-MATH-ERRNO %s 116 // RUN: %clang -### -target i686-unknown-linux -fno-fast-math -c %s 2>&1 \ 117 // RUN: | FileCheck --check-prefix=CHECK-MATH-ERRNO %s 118 // RUN: %clang -### -target i686-unknown-linux -fno-math-errno -fno-fast-math -c %s 2>&1 \ 119 // RUN: | FileCheck --check-prefix=CHECK-MATH-ERRNO %s 120 // RUN: %clang -### -target i686-apple-darwin -fno-fast-math -c %s 2>&1 \ 121 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 122 // RUN: %clang -### -target i686-apple-darwin -fno-math-errno -fno-fast-math -c %s 2>&1 \ 123 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 124 // RUN: %clang -### -fno-fast-math -fno-math-errno -c %s 2>&1 \ 125 // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s 126 // 127 // RUN: %clang -### -fno-math-errno -fassociative-math -freciprocal-math \ 128 // RUN: -fno-signed-zeros -fno-trapping-math -c %s 2>&1 \ 129 // RUN: | FileCheck --check-prefix=CHECK-UNSAFE-MATH %s 130 // CHECK-UNSAFE-MATH: "-cc1" 131 // CHECK-UNSAFE-MATH: "-menable-unsafe-fp-math" 132 // CHECK-UNSAFE-MATH: "-mreassociate" 133 // 134 // RUN: %clang -### -fno-fast-math -fno-math-errno -fassociative-math -freciprocal-math \ 135 // RUN: -fno-signed-zeros -fno-trapping-math -c %s 2>&1 \ 136 // RUN: | FileCheck --check-prefix=CHECK-NO-FAST-MATH-UNSAFE-MATH %s 137 // CHECK-NO-FAST-MATH-UNSAFE-MATH: "-cc1" 138 // CHECK-NO-FAST-MATH-UNSAFE-MATH: "-menable-unsafe-fp-math" 139 // CHECK-NO-FAST-MATH-UNSAFE-MATH: "-mreassociate" 140 141 // The 2nd -fno-fast-math overrides -fassociative-math. 142 143 // RUN: %clang -### -fno-fast-math -fno-math-errno -fassociative-math -freciprocal-math \ 144 // RUN: -fno-fast-math -fno-signed-zeros -fno-trapping-math -c %s 2>&1 \ 145 // RUN: | FileCheck --check-prefix=CHECK-UNSAFE-MATH-NO-FAST-MATH %s 146 // CHECK-UNSAFE-MATH-NO-FAST-MATH: "-cc1" 147 // CHECK-UNSAFE-MATH-NO-FAST-MATH-NOT: "-menable-unsafe-fp-math" 148 // CHECK-UNSAFE-MATH-NO-FAST-MATH-NOT: "-mreassociate" 149 // 150 // Check that various umbrella flags also enable these frontend options. 151 // RUN: %clang -### -ffast-math -c %s 2>&1 \ 152 // RUN: | FileCheck --check-prefix=CHECK-NO-INFS %s 153 // RUN: %clang -### -ffast-math -c %s 2>&1 \ 154 // RUN: | FileCheck --check-prefix=CHECK-NO-NANS %s 155 // RUN: %clang -### -ffast-math -c %s 2>&1 \ 156 // RUN: | FileCheck --check-prefix=CHECK-UNSAFE-MATH %s 157 // RUN: %clang -### -ffinite-math-only -c %s 2>&1 \ 158 // RUN: | FileCheck --check-prefix=CHECK-NO-INFS %s 159 // RUN: %clang -### -ffinite-math-only -c %s 2>&1 \ 160 // RUN: | FileCheck --check-prefix=CHECK-NO-NANS %s 161 // RUN: %clang -### -funsafe-math-optimizations -fno-math-errno -c %s 2>&1 \ 162 // RUN: | FileCheck --check-prefix=CHECK-UNSAFE-MATH %s 163 // 164 // One umbrella flag is *really* weird and also changes the semantics of the 165 // program by adding a special preprocessor macro. Check that the frontend flag 166 // modeling this semantic change is provided. Also check that the flag is not 167 // present if any of the optimizations are disabled. 168 // RUN: %clang -### -ffast-math -c %s 2>&1 \ 169 // RUN: | FileCheck --check-prefix=CHECK-FAST-MATH %s 170 // RUN: %clang -### -fno-fast-math -ffast-math -c %s 2>&1 \ 171 // RUN: | FileCheck --check-prefix=CHECK-FAST-MATH %s 172 // RUN: %clang -### -funsafe-math-optimizations -ffinite-math-only \ 173 // RUN: -fno-math-errno -ffp-contract=fast -fno-rounding-math -c %s 2>&1 \ 174 // RUN: | FileCheck --check-prefix=CHECK-FAST-MATH %s 175 // RUN: %clang -### -fno-honor-infinities -fno-honor-nans -fno-math-errno \ 176 // RUN: -fassociative-math -freciprocal-math -fno-signed-zeros \ 177 // RUN: -fno-trapping-math -ffp-contract=fast -fno-rounding-math -c %s 2>&1 \ 178 // RUN: | FileCheck --check-prefix=CHECK-FAST-MATH %s 179 // CHECK-FAST-MATH: "-cc1" 180 // CHECK-FAST-MATH: "-ffast-math" 181 // CHECK-FAST-MATH: "-ffinite-math-only" 182 // 183 // RUN: %clang -### -ffast-math -fno-fast-math -c %s 2>&1 \ 184 // RUN: | FileCheck --check-prefix=CHECK-NO-FAST-MATH %s 185 // RUN: %clang -### -ffast-math -fno-finite-math-only -c %s 2>&1 \ 186 // RUN: | FileCheck --check-prefix=CHECK-NO-FAST-MATH %s 187 // RUN: %clang -### -ffast-math -fno-unsafe-math-optimizations -c %s 2>&1 \ 188 // RUN: | FileCheck --check-prefix=CHECK-NO-FAST-MATH %s 189 // RUN: %clang -### -ffast-math -fmath-errno -c %s 2>&1 \ 190 // RUN: | FileCheck --check-prefix=CHECK-NO-FAST-MATH %s 191 // RUN: %clang -### -ffast-math -fno-associative-math -c %s 2>&1 \ 192 // RUN: | FileCheck --check-prefix=CHECK-NO-FAST-MATH --check-prefix=CHECK-ASSOC-MATH %s 193 // CHECK-NO-FAST-MATH: "-cc1" 194 // CHECK-NO-FAST-MATH-NOT: "-ffast-math" 195 // CHECK-ASSOC-MATH-NOT: "-mreassociate" 196 // 197 // Check various means of disabling these flags, including disabling them after 198 // they've been enabled via an umbrella flag. 199 // RUN: %clang -### -fno-honor-infinities -fhonor-infinities -c %s 2>&1 \ 200 // RUN: | FileCheck --check-prefix=CHECK-NO-NO-INFS %s 201 // RUN: %clang -### -ffinite-math-only -fhonor-infinities -c %s 2>&1 \ 202 // RUN: | FileCheck --check-prefix=CHECK-NO-NO-INFS %s 203 // RUN: %clang -### -ffinite-math-only -fno-finite-math-only -c %s 2>&1 \ 204 // RUN: | FileCheck --check-prefix=CHECK-NO-NO-INFS %s 205 // RUN: %clang -### -ffast-math -fhonor-infinities -c %s 2>&1 \ 206 // RUN: | FileCheck --check-prefix=CHECK-NO-NO-INFS %s 207 // RUN: %clang -### -ffast-math -fno-finite-math-only -c %s 2>&1 \ 208 // RUN: | FileCheck --check-prefix=CHECK-NO-NO-INFS %s 209 // CHECK-NO-NO-INFS: "-cc1" 210 // CHECK-NO-NO-INFS-NOT: "-menable-no-infs" 211 // CHECK-NO-NO-INFS-NOT: "-ffinite-math-only" 212 // CHECK-NO-NO-INFS: "-o" 213 // 214 // RUN: %clang -### -fno-honor-nans -fhonor-nans -c %s 2>&1 \ 215 // RUN: | FileCheck --check-prefix=CHECK-NO-NO-NANS %s 216 // RUN: %clang -### -ffinite-math-only -fhonor-nans -c %s 2>&1 \ 217 // RUN: | FileCheck --check-prefix=CHECK-NO-NO-NANS %s 218 // RUN: %clang -### -ffinite-math-only -fno-finite-math-only -c %s 2>&1 \ 219 // RUN: | FileCheck --check-prefix=CHECK-NO-NO-NANS %s 220 // RUN: %clang -### -ffast-math -fhonor-nans -c %s 2>&1 \ 221 // RUN: | FileCheck --check-prefix=CHECK-NO-NO-NANS %s 222 // RUN: %clang -### -ffast-math -fno-finite-math-only -c %s 2>&1 \ 223 // RUN: | FileCheck --check-prefix=CHECK-NO-NO-NANS %s 224 // CHECK-NO-NO-NANS: "-cc1" 225 // CHECK-NO-NO-NANS-NOT: "-menable-no-nans" 226 // CHECK-NO-NO-NANS-NOT: "-ffinite-math-only" 227 // CHECK-NO-NO-NANS: "-o" 228 229 // A later inverted option overrides an earlier option. 230 231 // RUN: %clang -### -fassociative-math -freciprocal-math -fno-signed-zeros \ 232 // RUN: -fno-trapping-math -fno-associative-math -c %s 2>&1 \ 233 // RUN: | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s 234 235 // RUN: %clang -### -funsafe-math-optimizations -fno-associative-math -c %s \ 236 // RUN: 2>&1 | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s 237 238 // RUN: %clang -### -funsafe-math-optimizations -fno-reciprocal-math -c %s \ 239 // RUN: 2>&1 | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s 240 // RUN: %clang -### -funsafe-math-optimizations -fsigned-zeros -c %s 2>&1 \ 241 // RUN: | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s 242 // RUN: %clang -### -funsafe-math-optimizations -ftrapping-math -c %s 2>&1 \ 243 // RUN: | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s 244 // RUN: %clang -### -funsafe-math-optimizations -fno-unsafe-math-optimizations \ 245 // RUN: -c %s 2>&1 \ 246 // RUN: | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s 247 // RUN: %clang -### -ffast-math -fno-associative-math -c %s 2>&1 \ 248 // RUN: | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s 249 250 // RUN: %clang -### -ffast-math -fno-reciprocal-math -c %s 2>&1 \ 251 // RUN: | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s 252 // RUN: %clang -### -ffast-math -fsigned-zeros -c %s 2>&1 \ 253 // RUN: | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s 254 // RUN: %clang -### -ffast-math -ftrapping-math -c %s 2>&1 \ 255 // RUN: | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s 256 // RUN: %clang -### -ffast-math -fno-unsafe-math-optimizations -c %s 2>&1 \ 257 // RUN: | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s 258 259 // CHECK-NO-UNSAFE-MATH: "-cc1" 260 // CHECK-NO-UNSAFE-MATH-NOT: "-menable-unsafe-fp-math" 261 // CHECK-NO_UNSAFE-MATH-NOT: "-mreassociate" 262 // CHECK-NO-UNSAFE-MATH: "-o" 263 264 265 // Reassociate is allowed because it does not require reciprocal-math. 266 267 // RUN: %clang -### -fassociative-math -freciprocal-math -fno-signed-zeros \ 268 // RUN: -fno-trapping-math -fno-reciprocal-math -c %s 2>&1 \ 269 // RUN: | FileCheck --check-prefix=CHECK-REASSOC-NO-UNSAFE-MATH %s 270 271 // CHECK-REASSOC-NO-UNSAFE-MATH: "-cc1" 272 // CHECK-REASSOC-NO-UNSAFE-MATH-NOT: "-menable-unsafe-fp-math" 273 // CHECK-REASSOC-NO_UNSAFE-MATH: "-mreassociate" 274 // CHECK-REASSOC-NO-UNSAFE-MATH-NOT: "-menable-unsafe-fp-math" 275 // CHECK-REASSOC-NO-UNSAFE-MATH: "-o" 276 277 278 // In these runs, reassociate is not allowed because both no-signed-zeros and no-trapping-math are required. 279 280 // RUN: %clang -### -fassociative-math -freciprocal-math -fno-signed-zeros \ 281 // RUN: -fno-trapping-math -fsigned-zeros -c %s 2>&1 \ 282 // RUN: | FileCheck --check-prefix=CHECK-NO-REASSOC-NO-UNSAFE-MATH %s 283 284 // RUN: %clang -### -fassociative-math -freciprocal-math -fno-signed-zeros \ 285 // RUN: -fno-trapping-math -ftrapping-math -c %s 2>&1 \ 286 // RUN: | FileCheck --check-prefix=CHECK-NO-REASSOC-NO-UNSAFE-MATH %s 287 288 // CHECK-NO-REASSOC-NO-UNSAFE-MATH: "-cc1" 289 // CHECK-NO-REASSOC-NO-UNSAFE-MATH-NOT: "-menable-unsafe-fp-math" 290 // CHECK-NO-REASSOC-NO_UNSAFE-MATH-NOT: "-mreassociate" 291 // CHECK-NO-REASSOC-NO-UNSAFE-MATH-NOT: "-menable-unsafe-fp-math" 292 // CHECK-NO-REASSOC-NO-UNSAFE-MATH: "-o" 293 294 295 // RUN: %clang -### -ftrapping-math -fno-trapping-math -c %s 2>&1 \ 296 // RUN: | FileCheck --check-prefix=CHECK-NO-TRAPPING-MATH %s 297 // CHECK-NO-TRAPPING-MATH: "-fno-trapping-math" 298 299 // This isn't fast-math, but the option is handled in the same place as other FP params. 300 // Last option wins, and strict behavior is assumed by default. 301 302 // RUN: %clang -### -fno-strict-float-cast-overflow -c %s 2>&1 \ 303 // RUN: | FileCheck --check-prefix=CHECK-FPOV-WORKAROUND %s 304 // CHECK-FPOV-WORKAROUND: "-cc1" 305 // CHECK-FPOV-WORKAROUND: "-fno-strict-float-cast-overflow" 306 307 // RUN: %clang -### -c %s 2>&1 \ 308 // RUN: | FileCheck --check-prefix=CHECK-FPOV-WORKAROUND-DEFAULT %s 309 // CHECK-FPOV-WORKAROUND-DEFAULT: "-cc1" 310 // CHECK-FPOV-WORKAROUND-DEFAULT-NOT: "strict-float-cast-overflow" 311 312 // RUN: %clang -### -fstrict-float-cast-overflow -c %s 2>&1 \ 313 // RUN: | FileCheck --check-prefix=CHECK-NO-FPOV-WORKAROUND %s 314 // CHECK-NO-FPOV-WORKAROUND: "-cc1" 315 // CHECK-NO-FPOV-WORKAROUND-NOT: "strict-float-cast-overflow" 316 317 // RUN: %clang -### -fno-strict-float-cast-overflow -fstrict-float-cast-overflow -c %s 2>&1 \ 318 // RUN: | FileCheck --check-prefix=CHECK-NO-FPOV-WORKAROUND-OVERRIDE %s 319 // CHECK-NO-FPOV-WORKAROUND-OVERRIDE: "-cc1" 320 // CHECK-NO-FPOV-WORKAROUND-OVERRIDE-NOT: "strict-float-cast-overflow" 321 322