1*9880d681SAndroid Build Coastguard Worker; Check that we skip transformations if the attribute unsafe-fp-math 2*9880d681SAndroid Build Coastguard Worker; is not set. 3*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -instcombine -S | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine float @mysqrt(float %x, float %y) #0 { 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker %x.addr = alloca float, align 4 8*9880d681SAndroid Build Coastguard Worker %y.addr = alloca float, align 4 9*9880d681SAndroid Build Coastguard Worker store float %x, float* %x.addr, align 4 10*9880d681SAndroid Build Coastguard Worker store float %y, float* %y.addr, align 4 11*9880d681SAndroid Build Coastguard Worker %0 = load float, float* %x.addr, align 4 12*9880d681SAndroid Build Coastguard Worker %1 = load float, float* %x.addr, align 4 13*9880d681SAndroid Build Coastguard Worker %mul = fmul fast float %0, %1 14*9880d681SAndroid Build Coastguard Worker %2 = call float @llvm.sqrt.f32(float %mul) 15*9880d681SAndroid Build Coastguard Worker ret float %2 16*9880d681SAndroid Build Coastguard Worker} 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.sqrt.f32(float) #1 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker; CHECK: define float @mysqrt(float %x, float %y) { 21*9880d681SAndroid Build Coastguard Worker; CHECK: entry: 22*9880d681SAndroid Build Coastguard Worker; CHECK: %mul = fmul fast float %x, %x 23*9880d681SAndroid Build Coastguard Worker; CHECK: %0 = call float @llvm.sqrt.f32(float %mul) 24*9880d681SAndroid Build Coastguard Worker; CHECK: ret float %0 25*9880d681SAndroid Build Coastguard Worker; CHECK: } 26