diff --git a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h index ddc8a5eaffa94..0794f080b293c 100644 --- a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h +++ b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h @@ -185,35 +185,35 @@ class TargetTransformInfoImplBase { if (F->hasLocalLinkage() || !F->hasName()) return true; - StringRef Name = F->getName(); - - // These will all likely lower to a single selection DAG node. - // clang-format off - if (Name == "copysign" || Name == "copysignf" || Name == "copysignl" || - Name == "fabs" || Name == "fabsf" || Name == "fabsl" || - Name == "fmin" || Name == "fminf" || Name == "fminl" || - Name == "fmax" || Name == "fmaxf" || Name == "fmaxl" || - Name == "sin" || Name == "sinf" || Name == "sinl" || - Name == "cos" || Name == "cosf" || Name == "cosl" || - Name == "tan" || Name == "tanf" || Name == "tanl" || - Name == "asin" || Name == "asinf" || Name == "asinl" || - Name == "acos" || Name == "acosf" || Name == "acosl" || - Name == "atan" || Name == "atanf" || Name == "atanl" || - Name == "atan2" || Name == "atan2f" || Name == "atan2l"|| - Name == "sinh" || Name == "sinhf" || Name == "sinhl" || - Name == "cosh" || Name == "coshf" || Name == "coshl" || - Name == "tanh" || Name == "tanhf" || Name == "tanhl" || - Name == "sqrt" || Name == "sqrtf" || Name == "sqrtl" || - Name == "exp10" || Name == "exp10l" || Name == "exp10f") - return false; - // clang-format on - // These are all likely to be optimized into something smaller. - if (Name == "pow" || Name == "powf" || Name == "powl" || Name == "exp2" || - Name == "exp2l" || Name == "exp2f" || Name == "floor" || - Name == "floorf" || Name == "ceil" || Name == "round" || - Name == "ffs" || Name == "ffsl" || Name == "abs" || Name == "labs" || - Name == "llabs") - return false; + // StringRef Name = F->getName(); + + // // These will all likely lower to a single selection DAG node. + // // clang-format off + // if (Name == "copysign" || Name == "copysignf" || Name == "copysignl" || Name == "copysignl128" || + // Name == "fabs" || Name == "fabsf" || Name == "fabsl" || Name == "fabsl128" || + // Name == "fmin" || Name == "fminf" || Name == "fminl" || Name == "fminl128" || + // Name == "fmax" || Name == "fmaxf" || Name == "fmaxl" || Name == "fmaxl128" || + // Name == "sin" || Name == "sinf" || Name == "sinl" || Name == "sinl128" || + // Name == "cos" || Name == "cosf" || Name == "cosl" || Name == "cosl128" || + // Name == "tan" || Name == "tanf" || Name == "tanl" || Name == "tanl128" || + // Name == "asin" || Name == "asinf" || Name == "asinl" || Name == "asinl128" || + // Name == "acos" || Name == "acosf" || Name == "acosl" || Name == "acosl128" || + // Name == "atan" || Name == "atanf" || Name == "atanl" || Name == "atanl128" || + // Name == "atan2" || Name == "atan2f" || Name == "atan2l"|| Name == "atan2128l"|| + // Name == "sinh" || Name == "sinhf" || Name == "sinhl" || Name == "sinhl128" || + // Name == "cosh" || Name == "coshf" || Name == "coshl" || Name == "coshl128" || + // Name == "tanh" || Name == "tanhf" || Name == "tanhl" || Name == "tanhl128" || + // Name == "sqrt" || Name == "sqrtf" || Name == "sqrtl" || Name == "sqrtl128" || + // Name == "exp10" || Name == "exp10f" || Name == "exp10l"|| Name == "exp10f128") + // return false; + // // clang-format on + // // These are all likely to be optimized into something smaller. + // if (Name == "pow" || Name == "powf" || Name == "powl" || + // Name == "powf128" || Name == "exp2" || Name == "exp2f" || + // Name == "exp2l" || Name == "floor" || Name == "floorf" || + // Name == "ceil" || Name == "round" || Name == "ffs" || Name == "ffsl" || + // Name == "abs" || Name == "labs" || Name == "llabs") + // return false; return true; } diff --git a/llvm/test/Transforms/TailCallElim/inf-recursion.ll b/llvm/test/Transforms/TailCallElim/inf-recursion.ll deleted file mode 100644 index d224349562a7a..0000000000000 --- a/llvm/test/Transforms/TailCallElim/inf-recursion.ll +++ /dev/null @@ -1,54 +0,0 @@ -; RUN: opt < %s -passes=tailcallelim -verify-dom-info -S | FileCheck %s - -; Don't turn this into an infinite loop, this is probably the implementation -; of fabs and we expect the codegen to lower fabs. -; CHECK: @fabs(double %f) -; CHECK: call -; CHECK: ret - -define double @fabs(double %f) { -entry: - %tmp2 = call double @fabs( double %f ) ; [#uses=1] - ret double %tmp2 -} - -; Do turn other calls into infinite loops though. - -; CHECK-LABEL: define double @foo( -; CHECK-NOT: call -; CHECK: } -define double @foo(double %f) { - %t= call double @foo(double %f) - ret double %t -} - -; CHECK-LABEL: define float @fabsf( -; CHECK-NOT: call -; CHECK: } -define float @fabsf(float %f) { - %t= call float @fabsf(float 2.0) - ret float %t -} - -declare x86_fp80 @fabsl(x86_fp80 %f) - -; Don't crash while transforming a function with infinite recursion. -define i32 @PR22704(i1 %bool) { -entry: - br i1 %bool, label %t, label %f - -t: - %call1 = call i32 @PR22704(i1 1) - br label %return - -f: - %call = call i32 @PR22704(i1 1) - br label %return - -return: - ret i32 0 - -; CHECK-LABEL: @PR22704( -; CHECK: %bool.tr = phi i1 [ %bool, %entry ], [ true, %t ], [ true, %f ] -; CHECK: br i1 %bool.tr, label %t, label %f -}