| ; RUN: opt -passes=instcombine -S -disable-simplify-libcalls < %s | FileCheck %s |
| ; rdar://10466410 |
| |
| ; Instcombine tries to fold (fptrunc (sqrt (fpext x))) -> (sqrtf x), but this |
| ; shouldn't fold when sqrtf isn't available. |
| define float @foo(float %f) uwtable ssp { |
| entry: |
| ; CHECK: %conv = fpext float %f to double |
| ; CHECK: %call = tail call double @sqrt(double %conv) |
| ; CHECK: %conv1 = fptrunc double %call to float |
| %conv = fpext float %f to double |
| %call = tail call double @sqrt(double %conv) |
| %conv1 = fptrunc double %call to float |
| ret float %conv1 |
| } |
| |
| declare double @sqrt(double) |