--- /dev/null
+; Check that we skip transformations if the attribute unsafe-fp-math
+; is not set.
+; RUN: opt < %s -instcombine -S | FileCheck %s
+
+define float @mysqrt(float %x, float %y) #0 {
+entry:
+ %x.addr = alloca float, align 4
+ %y.addr = alloca float, align 4
+ store float %x, float* %x.addr, align 4
+ store float %y, float* %y.addr, align 4
+ %0 = load float, float* %x.addr, align 4
+ %1 = load float, float* %x.addr, align 4
+ %mul = fmul fast float %0, %1
+ %2 = call float @llvm.sqrt.f32(float %mul)
+ ret float %2
+}
+
+declare float @llvm.sqrt.f32(float) #1
+
+; CHECK: define float @mysqrt(float %x, float %y) {
+; CHECK: entry:
+; CHECK: %mul = fmul fast float %x, %x
+; CHECK: %0 = call float @llvm.sqrt.f32(float %mul)
+; CHECK: ret float %0
+; CHECK: }