From: Amy Huang Date: Mon, 8 Apr 2019 22:46:41 +0000 (+0000) Subject: Revert "[MS] Add metadata for __declspec(allocator)" X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8a96fa23e6432d8566e4d49b5378535472747792;p=platform%2Fupstream%2Fllvm.git Revert "[MS] Add metadata for __declspec(allocator)" This reverts commit e7bd735bb03a7b8141e32f7d6cb98e8914d8799e. Reverting because of buildbot failure. llvm-svn: 357952 --- diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index ba273d7..aa52e1e 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -3800,8 +3800,6 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, llvm::FunctionType *IRFuncTy = getTypes().GetFunctionType(CallInfo); - const Decl *TargetDecl = Callee.getAbstractInfo().getCalleeDecl().getDecl(); - #ifndef NDEBUG if (!(CallInfo.isVariadic() && CallInfo.getArgStruct())) { // For an inalloca varargs function, we don't expect CallInfo to match the @@ -4290,7 +4288,11 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, // Apply always_inline to all calls within flatten functions. // FIXME: should this really take priority over __try, below? if (CurCodeDecl && CurCodeDecl->hasAttr() && - !(TargetDecl && TargetDecl->hasAttr())) { + !(Callee.getAbstractInfo().getCalleeDecl().getDecl() && + Callee.getAbstractInfo() + .getCalleeDecl() + .getDecl() + ->hasAttr())) { Attrs = Attrs.addAttribute(getLLVMContext(), llvm::AttributeList::FunctionIndex, llvm::Attribute::AlwaysInline); @@ -4374,16 +4376,11 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, // Suppress tail calls if requested. if (llvm::CallInst *Call = dyn_cast(CI)) { + const Decl *TargetDecl = Callee.getAbstractInfo().getCalleeDecl().getDecl(); if (TargetDecl && TargetDecl->hasAttr()) Call->setTailCallKind(llvm::CallInst::TCK_NoTail); } - // Add metadata for calls to MSAllocator functions - // FIXME: Get the type that the return value is cast to. - if (!DisableDebugInfo && TargetDecl && - TargetDecl->hasAttr()) - getDebugInfo()->addHeapAllocSiteMetadata(CI, RetTy, Loc); - // 4. Finish the call. // If the call doesn't return, finish the basic block and clear the @@ -4540,6 +4537,7 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, } (); // Emit the assume_aligned check on the return value. + const Decl *TargetDecl = Callee.getAbstractInfo().getCalleeDecl().getDecl(); if (Ret.isScalar() && TargetDecl) { if (const auto *AA = TargetDecl->getAttr()) { llvm::Value *OffsetValue = nullptr; diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index da37da9..a982ef8 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -1959,20 +1959,6 @@ llvm::DIType *CGDebugInfo::getOrCreateStandaloneType(QualType D, return T; } -void CGDebugInfo::addHeapAllocSiteMetadata(llvm::Instruction *CI, - QualType D, - SourceLocation Loc) { - llvm::MDNode *node; - if (D.getTypePtr()->isVoidPointerType()) { - node = llvm::MDNode::get(CGM.getLLVMContext(), None); - } else { - QualType PointeeTy = D.getTypePtr()->getPointeeType(); - node = getOrCreateType(PointeeTy, getOrCreateFile(Loc)); - } - - CI->setMetadata("heapallocsite", node); -} - void CGDebugInfo::completeType(const EnumDecl *ED) { if (DebugKind <= codegenoptions::DebugLineTablesOnly) return; diff --git a/clang/lib/CodeGen/CGDebugInfo.h b/clang/lib/CodeGen/CGDebugInfo.h index fd7df08..67331b6 100644 --- a/clang/lib/CodeGen/CGDebugInfo.h +++ b/clang/lib/CodeGen/CGDebugInfo.h @@ -476,10 +476,6 @@ public: /// Emit standalone debug info for a type. llvm::DIType *getOrCreateStandaloneType(QualType Ty, SourceLocation Loc); - /// Add heapallocsite metadata for MSAllocator calls. - void addHeapAllocSiteMetadata(llvm::Instruction *CallSite, QualType Ty, - SourceLocation Loc); - void completeType(const EnumDecl *ED); void completeType(const RecordDecl *RD); void completeRequiredType(const RecordDecl *RD); diff --git a/clang/test/CodeGen/debug-info-codeview-heapallocsite.c b/clang/test/CodeGen/debug-info-codeview-heapallocsite.c deleted file mode 100644 index a0a7e3b..0000000 --- a/clang/test/CodeGen/debug-info-codeview-heapallocsite.c +++ /dev/null @@ -1,27 +0,0 @@ -// RUN: %clang_cc1 -triple x86_64-windows-msvc -debug-info-kind=limited -gcodeview -fdeclspec -S -emit-llvm < %s | FileCheck %s - -struct Foo { - int x; -}; - -__declspec(allocator) void *alloc_void(); -__declspec(allocator) struct Foo *alloc_foo(); - -void call_alloc_void() { - struct Foo *p = (struct Foo*)alloc_void(); -} - -void call_alloc_foo() { - struct Foo *p = alloc_foo(); -} - -// CHECK-LABEL: define {{.*}}void @call_alloc_void -// CHECK: call i8* {{.*}}@alloc_void{{.*}} !heapallocsite [[DBG1:!.*]] - -// CHECK-LABEL: define {{.*}}void @call_alloc_foo -// CHECK: call %struct.Foo* {{.*}}@alloc_foo{{.*}} !heapallocsite [[DBG2:!.*]] - -// CHECK: [[DBG1]] = !{} -// CHECK: [[DBG2]] = distinct !DICompositeType(tag: DW_TAG_structure_type, -// CHECK-SAME: name: "Foo" -