Fix auto-upgrade for the new parameter to llvm.objectsize
r352664 added a 'dynamic' parameter to objectsize, but the AutoUpgrade changes were incomplete. Also, fix an off-by-one error I made in the upgrade logic that is now no longer unreachable. Differential revision: https://reviews.llvm.org/D58071 llvm-svn: 353884
This commit is contained in:
parent
cf3a906fb4
commit
4ecd7a90a6
|
@ -743,7 +743,7 @@ static bool UpgradeIntrinsicFunction1(Function *F, Function *&NewFn) {
|
|||
// address space.
|
||||
if (Name.startswith("objectsize.")) {
|
||||
Type *Tys[2] = { F->getReturnType(), F->arg_begin()->getType() };
|
||||
if (F->arg_size() == 2 ||
|
||||
if (F->arg_size() == 2 || F->arg_size() == 3 ||
|
||||
F->getName() != Intrinsic::getName(Intrinsic::objectsize, Tys)) {
|
||||
rename(F);
|
||||
NewFn = Intrinsic::getDeclaration(F->getParent(), Intrinsic::objectsize,
|
||||
|
@ -3461,7 +3461,7 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
|
|||
? Builder.getFalse()
|
||||
: CI->getArgOperand(2);
|
||||
Value *Dynamic =
|
||||
CI->getNumArgOperands() < 3 ? Builder.getFalse() : CI->getArgOperand(3);
|
||||
CI->getNumArgOperands() < 4 ? Builder.getFalse() : CI->getArgOperand(3);
|
||||
NewCall = Builder.CreateCall(
|
||||
NewFn, {CI->getArgOperand(0), CI->getArgOperand(1), NullIsUnknownSize, Dynamic});
|
||||
break;
|
||||
|
|
12
llvm/test/Bitcode/objectsize-upgrade-7.0.ll
Normal file
12
llvm/test/Bitcode/objectsize-upgrade-7.0.ll
Normal file
|
@ -0,0 +1,12 @@
|
|||
; RUN: llvm-dis < %s.bc | FileCheck %s
|
||||
|
||||
; Bitcode compatibility test for 'dynamic' parameter to llvm.objectsize.
|
||||
|
||||
define void @callit(i8* %ptr) {
|
||||
%sz = call i64 @llvm.objectsize.i64.p0i8(i8* %ptr, i1 false, i1 true)
|
||||
; CHECK: %sz = call i64 @llvm.objectsize.i64.p0i8(i8* %ptr, i1 false, i1 true, i1 false)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare i64 @llvm.objectsize.i64.p0i8(i8*, i1, i1)
|
||||
; CHECK: declare i64 @llvm.objectsize.i64.p0i8(i8*, i1, i1, i1)
|
BIN
llvm/test/Bitcode/objectsize-upgrade-7.0.ll.bc
Normal file
BIN
llvm/test/Bitcode/objectsize-upgrade-7.0.ll.bc
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user