[llvm] r353884 - Fix auto-upgrade for the new parameter to llvm.objectsize

Erik Pilkington via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 12 13:55:39 PST 2019


Author: epilk
Date: Tue Feb 12 13:55:38 2019
New Revision: 353884

URL: http://llvm.org/viewvc/llvm-project?rev=353884&view=rev
Log:
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

Added:
    llvm/trunk/test/Bitcode/objectsize-upgrade-7.0.ll
    llvm/trunk/test/Bitcode/objectsize-upgrade-7.0.ll.bc   (with props)
Modified:
    llvm/trunk/lib/IR/AutoUpgrade.cpp

Modified: llvm/trunk/lib/IR/AutoUpgrade.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/AutoUpgrade.cpp?rev=353884&r1=353883&r2=353884&view=diff
==============================================================================
--- llvm/trunk/lib/IR/AutoUpgrade.cpp (original)
+++ llvm/trunk/lib/IR/AutoUpgrade.cpp Tue Feb 12 13:55:38 2019
@@ -743,7 +743,7 @@ static bool UpgradeIntrinsicFunction1(Fu
     // 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
                                    ? 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;

Added: llvm/trunk/test/Bitcode/objectsize-upgrade-7.0.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/objectsize-upgrade-7.0.ll?rev=353884&view=auto
==============================================================================
--- llvm/trunk/test/Bitcode/objectsize-upgrade-7.0.ll (added)
+++ llvm/trunk/test/Bitcode/objectsize-upgrade-7.0.ll Tue Feb 12 13:55:38 2019
@@ -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)

Added: llvm/trunk/test/Bitcode/objectsize-upgrade-7.0.ll.bc
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/objectsize-upgrade-7.0.ll.bc?rev=353884&view=auto
==============================================================================
Binary file - no diff available.

Propchange: llvm/trunk/test/Bitcode/objectsize-upgrade-7.0.ll.bc
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream




More information about the llvm-commits mailing list