[llvm] r365360 - Revert "[BPF] add new intrinsics preserve_{array, union, struct}_access_index"

Yonghong Song via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 8 10:47:44 PDT 2019


Author: yhs
Date: Mon Jul  8 10:47:43 2019
New Revision: 365360

URL: http://llvm.org/viewvc/llvm-project?rev=365360&view=rev
Log:
Revert "[BPF] add new intrinsics preserve_{array,union,struct}_access_index"

This reverts commit r365352.

Test ThinLTO/X86/lazyload_metadata.ll failed. Revert the commit
and at the same time to fix the issue.

Modified:
    llvm/trunk/docs/LangRef.rst
    llvm/trunk/include/llvm/IR/IRBuilder.h
    llvm/trunk/include/llvm/IR/Intrinsics.td
    llvm/trunk/include/llvm/IR/LLVMContext.h
    llvm/trunk/lib/IR/LLVMContext.cpp

Modified: llvm/trunk/docs/LangRef.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.rst?rev=365360&r1=365359&r2=365360&view=diff
==============================================================================
--- llvm/trunk/docs/LangRef.rst (original)
+++ llvm/trunk/docs/LangRef.rst Mon Jul  8 10:47:43 2019
@@ -17304,106 +17304,3 @@ Lowering:
 """""""""
 
 Lowers to a call to `objc_storeWeak <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-storeweak>`_.
-
-Preserving Debug Information Intrinsics
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-These intrinsics are used to carry certain debuginfo together with
-IR-level operations. For example, it may be desirable to
-know the structure/union name and the original user-level field
-indices. Such information got lost in IR GetElementPtr instruction
-since the IR types are different from debugInfo types and unions
-are converted to structs in IR.
-
-'``llvm.preserve.array.access.index``' Intrinsic
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Syntax:
-"""""""
-::
-
-      declare <type2>
-      @llvm.preserve.array.access.index.p0s_union.anons.p0a10s_union.anons(<type> base,
-                                                                           i32 dim,
-                                                                           i32 index)
-
-Overview:
-"""""""""
-
-The '``llvm.preserve.array.access.index``' intrinsic returns the getelementptr address
-based on array base ``base``, array dimension ``dim`` and the last access index ``index``
-into the array.
-
-Arguments:
-""""""""""
-
-The ``base`` is the array base address.  The ``dim`` is the array dimension.
-The ``base`` is a pointer if ``dim`` equals 0.
-The ``index`` is the last access index into the array or pointer.
-
-Semantics:
-""""""""""
-
-The '``llvm.preserve.array.access.index``' intrinsic produces the same result
-as a getelementptr with base ``base`` and access operands ``{dim's 0's, index}``.
-
-'``llvm.preserve.union.access.index``' Intrinsic
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Syntax:
-"""""""
-::
-
-      declare <type>
-      @llvm.preserve.union.access.index.p0s_union.anons.p0s_union.anons(<type> base,
-                                                                        i32 di_index)
-
-Overview:
-"""""""""
-
-The '``llvm.preserve.union.access.index``' intrinsic carries the debuginfo field index
-``di_index`` and returns the ``base`` address.
-The ``llvm.preserve.access.index`` type of metadata is attached to this call instruction
-to provide union debuginfo type.
-
-Arguments:
-""""""""""
-
-The ``base`` is the union base address. The ``di_index`` is the field index in debuginfo.
-
-Semantics:
-""""""""""
-
-The '``llvm.preserve.union.access.index``' intrinsic returns the ``base`` address.
-
-'``llvm.preserve.struct.access.index``' Intrinsic
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Syntax:
-"""""""
-::
-
-      declare <type2>
-      @llvm.preserve.struct.access.index.p0i8.p0s_struct.anon.0s(<type> base,
-                                                                 i32 gep_index,
-                                                                 i32 di_index)
-
-Overview:
-"""""""""
-
-The '``llvm.preserve.struct.access.index``' intrinsic returns the getelementptr address
-based on struct base ``base`` and IR struct member index ``gep_index``.
-The ``llvm.preserve.access.index`` type of metadata is attached to this call instruction
-to provide struct debuginfo type.
-
-Arguments:
-""""""""""
-
-The ``base`` is the structure base address. The ``gep_index`` is the struct member index
-based on IR structures. The ``di_index`` is the struct member index based on debuginfo.
-
-Semantics:
-""""""""""
-
-The '``llvm.preserve.struct.access.index``' intrinsic produces the same result
-as a getelementptr with base ``base`` and access operands ``{0, gep_index}``.

Modified: llvm/trunk/include/llvm/IR/IRBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/IRBuilder.h?rev=365360&r1=365359&r2=365360&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/IRBuilder.h (original)
+++ llvm/trunk/include/llvm/IR/IRBuilder.h Mon Jul  8 10:47:43 2019
@@ -2453,74 +2453,6 @@ public:
     return V;
   }
 
-  Value *CreatePreserveArrayAccessIndex(Value *Base, unsigned Dimension,
-                                        unsigned LastIndex) {
-    assert(isa<PointerType>(Base->getType()) &&
-           "Invalid Base ptr type for preserve.array.access.index.");
-    auto *BaseType = Base->getType();
-
-    Value *LastIndexV = getInt32(LastIndex);
-    Constant *Zero = ConstantInt::get(Type::getInt32Ty(Context), 0);
-    SmallVector<Value *, 4> IdxList;
-    for (unsigned I = 0; I < Dimension; ++I)
-      IdxList.push_back(Zero);
-    IdxList.push_back(LastIndexV);
-
-    Type *ResultType =
-        GetElementPtrInst::getGEPReturnType(Base, IdxList);
-
-    Module *M = BB->getParent()->getParent();
-    Function *FnPreserveArrayAccessIndex = Intrinsic::getDeclaration(
-        M, Intrinsic::preserve_array_access_index, {ResultType, BaseType});
-
-    Value *DimV = getInt32(Dimension);
-    CallInst *Fn =
-        CreateCall(FnPreserveArrayAccessIndex, {Base, DimV, LastIndexV});
-
-    return Fn;
-  }
-
-  Value *CreatePreserveUnionAccessIndex(Value *Base, unsigned FieldIndex,
-                                        MDNode *DbgInfo) {
-    assert(isa<PointerType>(Base->getType()) &&
-           "Invalid Base ptr type for preserve.union.access.index.");
-    auto *BaseType = Base->getType();
-
-    Module *M = BB->getParent()->getParent();
-    Function *FnPreserveUnionAccessIndex = Intrinsic::getDeclaration(
-        M, Intrinsic::preserve_union_access_index, {BaseType, BaseType});
-
-    Value *DIIndex = getInt32(FieldIndex);
-    CallInst *Fn =
-        CreateCall(FnPreserveUnionAccessIndex, {Base, DIIndex});
-    Fn->setMetadata(LLVMContext::MD_preserve_access_index, DbgInfo);
-
-    return Fn;
-  }
-
-  Value *CreatePreserveStructAccessIndex(Value *Base, unsigned Index,
-                                         unsigned FieldIndex, MDNode *DbgInfo) {
-    assert(isa<PointerType>(Base->getType()) &&
-           "Invalid Base ptr type for preserve.struct.access.index.");
-    auto *BaseType = Base->getType();
-
-    Value *GEPIndex = getInt32(Index);
-    Constant *Zero = ConstantInt::get(Type::getInt32Ty(Context), 0);
-    Type *ResultType =
-        GetElementPtrInst::getGEPReturnType(Base, {Zero, GEPIndex});
-
-    Module *M = BB->getParent()->getParent();
-    Function *FnPreserveStructAccessIndex = Intrinsic::getDeclaration(
-        M, Intrinsic::preserve_struct_access_index, {ResultType, BaseType});
-
-    Value *DIIndex = getInt32(FieldIndex);
-    CallInst *Fn = CreateCall(FnPreserveStructAccessIndex,
-                              {Base, GEPIndex, DIIndex});
-    Fn->setMetadata(LLVMContext::MD_preserve_access_index, DbgInfo);
-
-    return Fn;
-  }
-
 private:
   /// Helper function that creates an assume intrinsic call that
   /// represents an alignment assumption on the provided Ptr, Mask, Type

Modified: llvm/trunk/include/llvm/IR/Intrinsics.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Intrinsics.td?rev=365360&r1=365359&r2=365360&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/Intrinsics.td (original)
+++ llvm/trunk/include/llvm/IR/Intrinsics.td Mon Jul  8 10:47:43 2019
@@ -1040,6 +1040,7 @@ def int_clear_cache : Intrinsic<[], [llv
 // Intrinsic to detect whether its argument is a constant.
 def int_is_constant : Intrinsic<[llvm_i1_ty], [llvm_any_ty], [IntrNoMem], "llvm.is.constant">;
 
+
 //===-------------------------- Masked Intrinsics -------------------------===//
 //
 def int_masked_store : Intrinsic<[], [llvm_anyvector_ty,
@@ -1213,22 +1214,6 @@ def int_loop_decrement_reg :
 
 def int_ssa_copy : Intrinsic<[llvm_any_ty], [LLVMMatchType<0>],
                              [IntrNoMem, Returned<0>]>;
-
-//===------- Intrinsics that are used to preserve debug information -------===//
-
-def int_preserve_array_access_index : Intrinsic<[llvm_anyptr_ty],
-                                                [llvm_anyptr_ty, llvm_i32_ty,
-                                                 llvm_i32_ty],
-                                                [IntrNoMem, ImmArg<1>, ImmArg<2>]>;
-def int_preserve_union_access_index : Intrinsic<[llvm_anyptr_ty],
-                                                [llvm_anyptr_ty, llvm_i32_ty],
-                                                [IntrNoMem, ImmArg<1>]>;
-def int_preserve_struct_access_index : Intrinsic<[llvm_anyptr_ty],
-                                                 [llvm_anyptr_ty, llvm_i32_ty,
-                                                  llvm_i32_ty],
-                                                 [IntrNoMem, ImmArg<1>,
-                                                  ImmArg<2>]>;
-
 //===----------------------------------------------------------------------===//
 // Target-specific intrinsics
 //===----------------------------------------------------------------------===//

Modified: llvm/trunk/include/llvm/IR/LLVMContext.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/LLVMContext.h?rev=365360&r1=365359&r2=365360&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/LLVMContext.h (original)
+++ llvm/trunk/include/llvm/IR/LLVMContext.h Mon Jul  8 10:47:43 2019
@@ -99,7 +99,6 @@ public:
     MD_irr_loop = 24,                 // "irr_loop"
     MD_access_group = 25,             // "llvm.access.group"
     MD_callback = 26,                 // "callback"
-    MD_preserve_access_index = 27,    // "llvm.preserve.*.access.index"
   };
 
   /// Known operand bundle tag IDs, which always have the same value.  All

Modified: llvm/trunk/lib/IR/LLVMContext.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/LLVMContext.cpp?rev=365360&r1=365359&r2=365360&view=diff
==============================================================================
--- llvm/trunk/lib/IR/LLVMContext.cpp (original)
+++ llvm/trunk/lib/IR/LLVMContext.cpp Mon Jul  8 10:47:43 2019
@@ -63,7 +63,6 @@ LLVMContext::LLVMContext() : pImpl(new L
     {MD_irr_loop, "irr_loop"},
     {MD_access_group, "llvm.access.group"},
     {MD_callback, "callback"},
-    {MD_preserve_access_index, "llvm.preserve.access.index"},
   };
 
   for (auto &MDKind : MDKinds) {




More information about the llvm-commits mailing list