1 // RUN: %clang_cc1 -O3 -ffp-contract=fast -triple %itanium_abi_triple -emit-llvm -o - %s | FileCheck %s 2 3 float fp_contract_1(float a, float b, float c) { 4 // CHECK-LABEL: fp_contract_1fff( 5 // CHECK: fmul contract float 6 // CHECK: fadd contract float 7 return a * b + c; 8 } 9 10 float fp_contract_2(float a, float b, float c) { 11 // CHECK-LABEL: fp_contract_2fff( 12 // CHECK: fmul contract float 13 // CHECK: fsub contract float 14 return a * b - c; 15 } 16 17 void fp_contract_3(float *a, float b, float c) { 18 // CHECK-LABEL: fp_contract_3Pfff( 19 // CHECK: fmul contract float 20 // CHECK: fadd contract float 21 a[0] += b * c; 22 } 23 24 void fp_contract_4(float *a, float b, float c) { 25 // CHECK-LABEL: fp_contract_4Pfff( 26 // CHECK: fmul contract float 27 // CHECK: fsub contract float 28 a[0] -= b * c; 29 } 30