[SimplifyLibCalls] propagate tail flags on CallInsts
authorNick Desaulniers <ndesaulniers@google.com>
Mon, 13 Dec 2021 19:18:20 +0000 (11:18 -0800)
committerNick Desaulniers <ndesaulniers@google.com>
Mon, 13 Dec 2021 19:18:30 +0000 (11:18 -0800)
commit95ba0e45638ee5c6ba97ca971ddc01132e24a179
tree112f4664b31f35965f7cca21e88db876ca002aed
parent8ed70d0189ba21fa25066e49d6c1ed04359abf4b
[SimplifyLibCalls] propagate tail flags on CallInsts

I noticed we weren't propagating tail flags on calls when
FortifiedLibCallSimplifier.optimizeCall() was replacing calls to runtime
checked calls to the non-checked routines (when safe to do so). Make
sure to check this before replacing the original calls!

Also, avoid any libcall transforms when notail/musttail is present.

PR46734
Fixes: https://github.com/llvm/llvm-project/issues/46079

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D107872
28 files changed:
llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
llvm/test/CodeGen/X86/memset-nonzero.ll
llvm/test/Transforms/InstCombine/cabs-array.ll
llvm/test/Transforms/InstCombine/cabs-discrete.ll
llvm/test/Transforms/InstCombine/cos-1.ll
llvm/test/Transforms/InstCombine/fabs-libcall.ll
llvm/test/Transforms/InstCombine/fabs.ll
llvm/test/Transforms/InstCombine/fortify-folding.ll
llvm/test/Transforms/InstCombine/memccpy.ll
llvm/test/Transforms/InstCombine/memcpy-1.ll
llvm/test/Transforms/InstCombine/memcpy_chk-1.ll
llvm/test/Transforms/InstCombine/memmove-1.ll
llvm/test/Transforms/InstCombine/memmove_chk-1.ll
llvm/test/Transforms/InstCombine/mempcpy.ll
llvm/test/Transforms/InstCombine/memset-1.ll
llvm/test/Transforms/InstCombine/memset_chk-1.ll
llvm/test/Transforms/InstCombine/objsize.ll
llvm/test/Transforms/InstCombine/pow-1.ll
llvm/test/Transforms/InstCombine/pow-exp.ll
llvm/test/Transforms/InstCombine/pow_fp_int.ll
llvm/test/Transforms/InstCombine/pow_fp_int16.ll
llvm/test/Transforms/InstCombine/snprintf.ll
llvm/test/Transforms/InstCombine/stpcpy-1.ll
llvm/test/Transforms/InstCombine/stpcpy_chk-1.ll
llvm/test/Transforms/InstCombine/strcpy-1.ll
llvm/test/Transforms/InstCombine/strcpy_chk-1.ll
llvm/test/Transforms/InstCombine/strncpy-1.ll