Revert "xxx"
authorDávid Bolvanský <david.bolvansky@gmail.com>
Thu, 6 Apr 2023 14:54:00 +0000 (16:54 +0200)
committerDávid Bolvanský <david.bolvansky@gmail.com>
Thu, 6 Apr 2023 14:54:00 +0000 (16:54 +0200)
This reverts commit f60592438a7446595cfbfa3944681c689952d859.

llvm/include/llvm/IR/IRBuilder.h
llvm/lib/IR/IRBuilder.cpp
llvm/lib/Transforms/Utils/InlineFunction.cpp
llvm/test/Transforms/Inline/assumptions-from-callsite-attrs.ll
llvm/test/Transforms/Inline/nonnull.ll

index 0417d37..7cc6597 100644 (file)
@@ -2543,9 +2543,6 @@ public:
   CallInst *CreateAlignmentAssumption(const DataLayout &DL, Value *PtrValue,
                                       Value *Alignment,
                                       Value *OffsetValue = nullptr);
-  /// Create an assume intrinsic call that represents a nonnull
-  /// assumption on the provided pointer.
-  CallInst *CreateNonNullAssumption(Value *PtrValue);
 };
 
 /// This provides a uniform API for creating instructions and inserting
index d94f2bd..f3d5a60 100644 (file)
@@ -1410,12 +1410,6 @@ CallInst *IRBuilderBase::CreateAlignmentAssumption(const DataLayout &DL,
   return CreateAlignmentAssumptionHelper(DL, PtrValue, Alignment, OffsetValue);
 }
 
-CallInst *IRBuilderBase::CreateNonNullAssumption(Value *PtrValue) {
-  Value *Vals[] = { PtrValue };
-  OperandBundleDefT<Value *> NonNullOpB("nonnull", Vals);
-  return CreateAssumption(ConstantInt::getTrue(getContext()), {NonNullOpB});
-}
-
 IRBuilderDefaultInserter::~IRBuilderDefaultInserter() = default;
 IRBuilderCallbackInserter::~IRBuilderCallbackInserter() = default;
 IRBuilderFolder::~IRBuilderFolder() = default;
index 0480900..8794a6d 100644 (file)
@@ -1460,23 +1460,6 @@ static void AddAlignmentAssumptions(CallBase &CB, InlineFunctionInfo &IFI) {
   }
 }
 
-static void AddAssumptionsFromCallSiteAttrs(CallBase &CB, InlineFunctionInfo &IFI) {
-  if (!IFI.GetAssumptionCache)
-    return;
-
-  AssumptionCache *AC = &IFI.GetAssumptionCache(*CB.getCaller());
-  Function *CalledFunc = CB.getCalledFunction();
-  IRBuilder<> Builder(&CB);
-
-  for (Argument &Arg : CalledFunc->args()) {
-    unsigned ArgNo = Arg.getArgNo();
-    if (CB.paramHasAttr(ArgNo, Attribute::NonNull)) {
-      CallInst *NewAsmp = Builder.CreateNonNullAssumption(CB.getArgOperand(ArgNo));
-      AC->registerAssumption(cast<AssumeInst>(NewAsmp));
-    }
-  }
-}
-
 static void HandleByValArgumentInit(Type *ByValType, Value *Dst, Value *Src,
                                     Module *M, BasicBlock *InsertBlock,
                                     InlineFunctionInfo &IFI,
@@ -2147,8 +2130,6 @@ llvm::InlineResult llvm::InlineFunction(CallBase &CB, InlineFunctionInfo &IFI,
       VMap[&*I] = ActualArg;
     }
 
-    AddAssumptionsFromCallSiteAttrs(CB, IFI);
-
     // TODO: Remove this when users have been updated to the assume bundles.
     // Add alignment assumptions if necessary. We do this before the inlined
     // instructions are actually cloned into the caller so that we can easily
index 26aac0d..1a219a2 100644 (file)
@@ -8,8 +8,6 @@ declare void @h(ptr %p, ptr %q, ptr %z)
 define void @f(ptr %p, ptr %q, ptr %z) {
 ; CHECK-LABEL: define void @f
 ; CHECK-SAME: (ptr [[P:%.*]], ptr [[Q:%.*]], ptr [[Z:%.*]]) {
-; CHECK-NEXT:    call void @llvm.assume(i1 true) [ "nonnull"(ptr [[P]]) ]
-; CHECK-NEXT:    call void @llvm.assume(i1 true) [ "nonnull"(ptr [[Z]]) ]
 ; CHECK-NEXT:    call void @h(ptr [[P]], ptr [[Q]], ptr [[Z]])
 ; CHECK-NEXT:    ret void
 ;
index f7f24f5..658ae47 100644 (file)
@@ -54,7 +54,6 @@ done:
 define void @caller(ptr nonnull %arg) {
 ; CHECK-LABEL: define void @caller
 ; CHECK-SAME: (ptr nonnull [[ARG:%.*]]) {
-; CHECK-NEXT:    call void @llvm.assume(i1 true) [ "nonnull"(ptr [[ARG]]) ]
 ; CHECK-NEXT:    call void @bar()
 ; CHECK-NEXT:    ret void
 ;
@@ -76,7 +75,6 @@ define void @caller2(ptr %arg) {
 define void @caller3(ptr %arg) {
 ; CHECK-LABEL: define void @caller3
 ; CHECK-SAME: (ptr [[ARG:%.*]]) {
-; CHECK-NEXT:    call void @llvm.assume(i1 true) [ "nonnull"(ptr [[ARG]]) ]
 ; CHECK-NEXT:    [[CMP_I:%.*]] = icmp eq ptr [[ARG]], null
 ; CHECK-NEXT:    br i1 [[CMP_I]], label [[EXPENSIVE_I:%.*]], label [[DONE_I:%.*]]
 ; CHECK:       expensive.i: