
Otherwise when we visit all libcalls in updateCGAndAnalysisManagerForPass(), the old libcall is dead and doesn't have a node. We treat libcalls conservatively in LazyCallGraph because any function may introduce calls to them out of thin air. It is weird to change the signature of a libcall since introducing calls to the libcall with a different signature may break, but other passes like deadargelim already do it, so let's preserve this behavior for now. Fixes an issue found in D128830. Reviewed By: psamolysov Differential Revision: https://reviews.llvm.org/D132764
18 lines
364 B
LLVM
18 lines
364 B
LLVM
; RUN: opt -passes=inline,argpromotion < %s -S | FileCheck %s
|
|
|
|
; Make sure we update the list of libcalls when we replace a libcall.
|
|
|
|
; CHECK: define {{.*}}@a
|
|
|
|
define void @a() {
|
|
entry:
|
|
%call = call float @strtof(ptr noundef null, ptr noundef null)
|
|
ret void
|
|
}
|
|
|
|
define internal float @strtof(ptr noundef %0, ptr noundef %1) nounwind {
|
|
entry:
|
|
ret float 0.0
|
|
}
|
|
|