Files
clang-p2996/llvm/test/Transforms/InstCombine/fabs-libcall.ll
Nick Desaulniers 95ba0e4563 [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
2021-12-13 11:18:30 -08:00

24 lines
794 B
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -mtriple=i686-apple-macosx -instcombine %s | FileCheck %s
declare x86_fp80 @fabsl(x86_fp80)
define x86_fp80 @replace_fabs_call_f80(x86_fp80 %x) {
; CHECK-LABEL: @replace_fabs_call_f80(
; CHECK-NEXT: [[FABSL:%.*]] = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 [[X:%.*]])
; CHECK-NEXT: ret x86_fp80 [[FABSL]]
;
%fabsl = tail call x86_fp80 @fabsl(x86_fp80 %x)
ret x86_fp80 %fabsl
}
define x86_fp80 @fmf_replace_fabs_call_f80(x86_fp80 %x) {
; CHECK-LABEL: @fmf_replace_fabs_call_f80(
; CHECK-NEXT: [[FABSL:%.*]] = tail call nnan x86_fp80 @llvm.fabs.f80(x86_fp80 [[X:%.*]])
; CHECK-NEXT: ret x86_fp80 [[FABSL]]
;
%fabsl = tail call nnan x86_fp80 @fabsl(x86_fp80 %x)
ret x86_fp80 %fabsl
}