// RUN: %clang_cc1 -O3 -ffp-contract=fast -triple %itanium_abi_triple -emit-llvm -o - %s | FileCheck %s float fp_contract_1(float a, float b, float c) { // CHECK-LABEL: fp_contract_1fff( // CHECK: fmul contract float // CHECK: fadd contract float return a * b + c; } float fp_contract_2(float a, float b, float c) { // CHECK-LABEL: fp_contract_2fff( // CHECK: fmul contract float // CHECK: fsub contract float return a * b - c; } void fp_contract_3(float *a, float b, float c) { // CHECK-LABEL: fp_contract_3Pfff( // CHECK: fmul contract float // CHECK: fadd contract float a[0] += b * c; } void fp_contract_4(float *a, float b, float c) { // CHECK-LABEL: fp_contract_4Pfff( // CHECK: fmul contract float // CHECK: fsub contract float a[0] -= b * c; } |