30 lines · cpp
1// RUN: %clang_cc1 -O3 -ffp-contract=fast -triple %itanium_abi_triple -emit-llvm -o - %s | FileCheck %s2 3float fp_contract_1(float a, float b, float c) {4 // CHECK-LABEL: fp_contract_1fff(5 // CHECK: fmul contract float6 // CHECK: fadd contract float7 return a * b + c;8}9 10float fp_contract_2(float a, float b, float c) {11 // CHECK-LABEL: fp_contract_2fff(12 // CHECK: fmul contract float13 // CHECK: fsub contract float14 return a * b - c;15}16 17void fp_contract_3(float *a, float b, float c) {18 // CHECK-LABEL: fp_contract_3Pfff(19 // CHECK: fmul contract float20 // CHECK: fadd contract float21 a[0] += b * c;22}23 24void fp_contract_4(float *a, float b, float c) {25 // CHECK-LABEL: fp_contract_4Pfff(26 // CHECK: fmul contract float27 // CHECK: fsub contract float28 a[0] -= b * c;29}30