Re: [PATCH] D21515: Update clang for D21514. NFC
This revision was automatically updated to reflect the committed changes. Closed by commit rL281018: Update clang for D21514. NFC (authored by deadalnix). Changed prior to commit: https://reviews.llvm.org/D21515?vs=62791&id=70783#toc Repository: rL LLVM https://reviews.llvm.org/D21515 Files: cfe/trunk/lib/CodeGen/CGExpr.cpp Index: cfe/trunk/lib/CodeGen/CGExpr.cpp === --- cfe/trunk/lib/CodeGen/CGExpr.cpp +++ cfe/trunk/lib/CodeGen/CGExpr.cpp @@ -2758,10 +2758,11 @@ llvm::CallInst *CodeGenFunction::EmitTrapCall(llvm::Intrinsic::ID IntrID) { llvm::CallInst *TrapCall = Builder.CreateCall(CGM.getIntrinsic(IntrID)); - if (!CGM.getCodeGenOpts().TrapFuncName.empty()) -TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, - "trap-func-name", - CGM.getCodeGenOpts().TrapFuncName); + if (!CGM.getCodeGenOpts().TrapFuncName.empty()) { +auto A = llvm::Attribute::get(getLLVMContext(), "trap-func-name", + CGM.getCodeGenOpts().TrapFuncName); +TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, A); + } return TrapCall; } Index: cfe/trunk/lib/CodeGen/CGExpr.cpp === --- cfe/trunk/lib/CodeGen/CGExpr.cpp +++ cfe/trunk/lib/CodeGen/CGExpr.cpp @@ -2758,10 +2758,11 @@ llvm::CallInst *CodeGenFunction::EmitTrapCall(llvm::Intrinsic::ID IntrID) { llvm::CallInst *TrapCall = Builder.CreateCall(CGM.getIntrinsic(IntrID)); - if (!CGM.getCodeGenOpts().TrapFuncName.empty()) -TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, - "trap-func-name", - CGM.getCodeGenOpts().TrapFuncName); + if (!CGM.getCodeGenOpts().TrapFuncName.empty()) { +auto A = llvm::Attribute::get(getLLVMContext(), "trap-func-name", + CGM.getCodeGenOpts().TrapFuncName); +TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, A); + } return TrapCall; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r281018 - Update clang for D21514. NFC
Author: deadalnix Date: Thu Sep 8 23:42:49 2016 New Revision: 281018 URL: http://llvm.org/viewvc/llvm-project?rev=281018&view=rev Log: Update clang for D21514. NFC Summary: As per title. Reviewers: ahatanak, bkramer, whitequark, mehdi_amini, void Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D21515 Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=281018&r1=281017&r2=281018&view=diff == --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original) +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Thu Sep 8 23:42:49 2016 @@ -2758,10 +2758,11 @@ void CodeGenFunction::EmitTrapCheck(llvm llvm::CallInst *CodeGenFunction::EmitTrapCall(llvm::Intrinsic::ID IntrID) { llvm::CallInst *TrapCall = Builder.CreateCall(CGM.getIntrinsic(IntrID)); - if (!CGM.getCodeGenOpts().TrapFuncName.empty()) -TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, - "trap-func-name", - CGM.getCodeGenOpts().TrapFuncName); + if (!CGM.getCodeGenOpts().TrapFuncName.empty()) { +auto A = llvm::Attribute::get(getLLVMContext(), "trap-func-name", + CGM.getCodeGenOpts().TrapFuncName); +TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, A); + } return TrapCall; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D13744: Update clang as per D13683
deadalnix created this revision. deadalnix added reviewers: chandlerc, dexonsmith, echristo. deadalnix added a subscriber: cfe-commits. This diffs remove use of deprecated API. http://reviews.llvm.org/D13744 Files: lib/CodeGen/CGDebugInfo.cpp Index: lib/CodeGen/CGDebugInfo.cpp === --- lib/CodeGen/CGDebugInfo.cpp +++ lib/CodeGen/CGDebugInfo.cpp @@ -844,7 +844,7 @@ } llvm::DITypeRefArray EltTypeArray = DBuilder.getOrCreateTypeArray(EltTys); - return DBuilder.createSubroutineType(Unit, EltTypeArray); + return DBuilder.createSubroutineType(EltTypeArray); } /// Convert an AccessSpecifier into the corresponding DINode flag. @@ -1095,7 +1095,7 @@ if (Func->getExtProtoInfo().RefQualifier == RQ_RValue) Flags |= llvm::DINode::FlagRValueReference; - return DBuilder.createSubroutineType(Unit, EltTypeArray, Flags); + return DBuilder.createSubroutineType(EltTypeArray, Flags); } /// isFunctionLocalClass - Return true if CXXRecordDecl is defined @@ -1395,7 +1395,7 @@ /* Function type */ llvm::Metadata *STy = getOrCreateType(Context.IntTy, Unit); llvm::DITypeRefArray SElements = DBuilder.getOrCreateTypeArray(STy); - llvm::DIType *SubTy = DBuilder.createSubroutineType(Unit, SElements); + llvm::DIType *SubTy = DBuilder.createSubroutineType(SElements); unsigned Size = Context.getTypeSize(Context.VoidPtrTy); llvm::DIType *vtbl_ptr_type = DBuilder.createPointerType(SubTy, Size, 0, "__vtbl_ptr_type"); @@ -2599,8 +2599,7 @@ if (!D || DebugKind <= CodeGenOptions::DebugLineTablesOnly) // Create fake but valid subroutine type. Otherwise -verify would fail, and // subprogram DIE will miss DW_AT_decl_file and DW_AT_decl_line fields. -return DBuilder.createSubroutineType(F, - DBuilder.getOrCreateTypeArray(None)); +return DBuilder.createSubroutineType(DBuilder.getOrCreateTypeArray(None)); if (const CXXMethodDecl *Method = dyn_cast(D)) return getOrCreateMethodType(Method, F); @@ -2637,7 +2636,7 @@ Elts.push_back(DBuilder.createUnspecifiedParameter()); llvm::DITypeRefArray EltTypeArray = DBuilder.getOrCreateTypeArray(Elts); -return DBuilder.createSubroutineType(F, EltTypeArray); +return DBuilder.createSubroutineType(EltTypeArray); } // Handle variadic function types; they need an additional @@ -2651,7 +2650,7 @@ EltTys.push_back(getOrCreateType(FPT->getParamType(i), F)); EltTys.push_back(DBuilder.createUnspecifiedParameter()); llvm::DITypeRefArray EltTypeArray = DBuilder.getOrCreateTypeArray(EltTys); - return DBuilder.createSubroutineType(F, EltTypeArray); + return DBuilder.createSubroutineType(EltTypeArray); } return cast(getOrCreateType(FnType, F)); Index: lib/CodeGen/CGDebugInfo.cpp === --- lib/CodeGen/CGDebugInfo.cpp +++ lib/CodeGen/CGDebugInfo.cpp @@ -844,7 +844,7 @@ } llvm::DITypeRefArray EltTypeArray = DBuilder.getOrCreateTypeArray(EltTys); - return DBuilder.createSubroutineType(Unit, EltTypeArray); + return DBuilder.createSubroutineType(EltTypeArray); } /// Convert an AccessSpecifier into the corresponding DINode flag. @@ -1095,7 +1095,7 @@ if (Func->getExtProtoInfo().RefQualifier == RQ_RValue) Flags |= llvm::DINode::FlagRValueReference; - return DBuilder.createSubroutineType(Unit, EltTypeArray, Flags); + return DBuilder.createSubroutineType(EltTypeArray, Flags); } /// isFunctionLocalClass - Return true if CXXRecordDecl is defined @@ -1395,7 +1395,7 @@ /* Function type */ llvm::Metadata *STy = getOrCreateType(Context.IntTy, Unit); llvm::DITypeRefArray SElements = DBuilder.getOrCreateTypeArray(STy); - llvm::DIType *SubTy = DBuilder.createSubroutineType(Unit, SElements); + llvm::DIType *SubTy = DBuilder.createSubroutineType(SElements); unsigned Size = Context.getTypeSize(Context.VoidPtrTy); llvm::DIType *vtbl_ptr_type = DBuilder.createPointerType(SubTy, Size, 0, "__vtbl_ptr_type"); @@ -2599,8 +2599,7 @@ if (!D || DebugKind <= CodeGenOptions::DebugLineTablesOnly) // Create fake but valid subroutine type. Otherwise -verify would fail, and // subprogram DIE will miss DW_AT_decl_file and DW_AT_decl_line fields. -return DBuilder.createSubroutineType(F, - DBuilder.getOrCreateTypeArray(None)); +return DBuilder.createSubroutineType(DBuilder.getOrCreateTypeArray(None)); if (const CXXMethodDecl *Method = dyn_cast(D)) return getOrCreateMethodType(Method, F); @@ -2637,7 +2636,7 @@ Elts.push_back(DBuilder.createUnspecifiedParameter()); llvm::DITypeRefArray EltTypeArray = DBuilder.getOrCreateTypeArray(Elts); -return DBuilder.createSubroutineType(F, EltTypeArray); +return DBuilder.createSubroutineType(EltTypeArray); } // Handle variadic function types; they need an
Re: [PATCH] D19299: lower __builtin_expect() directly to prof metadata instead of LLVM intrinsic
deadalnix added a subscriber: deadalnix. Comment at: lib/CodeGen/CGStmt.cpp:1560-1588 @@ -1560,1 +1559,31 @@ +MDHelper.createUnpredictable()); + } else if (FD->getBuiltinID() == Builtin::BI__builtin_expect) { + +// FIXME: builtin_expect should use the same metadata type as +// builtin_unpredictable and be handled above. For now, we're mimicking +// the LLVM behavior of the 'LowerExpectIntrinsic' pass. + +// HACK: Hardcode the taken/not-taken weights based on the existing LLVM +// default values. This code is expected to be very temporary. Once we +// have prepared LLVM to handle builtin_expect using 'unpredictable' +// metadata, this gets deleted. + +const int LikelyWeight = 64; +const int UnlikelyWeight = 4; + +llvm::Value *ExpectedVal = EmitScalarExpr(Call->getArg(1)); +if (auto *ExpectConst = dyn_cast(ExpectedVal)) { + // The +1 is for the default case. + SmallVector Weights(SwitchInsn->getNumCases() + 1, +UnlikelyWeight); + auto ExpectedCase = SwitchInsn->findCaseValue(ExpectConst); + if (ExpectedCase == SwitchInsn->case_default()) +Weights[0] = LikelyWeight; + else +Weights[ExpectedCase.getCaseIndex() + 1] = LikelyWeight; + + SwitchInsn->setMetadata(llvm::LLVMContext::MD_prof, + MDHelper.createBranchWeights(Weights)); +} + } } If I understand properly this is transitional and eventually, you want to remove the intrinsic ? I think I like it, having 2 ways to hint here is only making things more complicated without adding much value. http://reviews.llvm.org/D19299 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D19299: lower __builtin_expect() directly to prof metadata instead of LLVM intrinsic
deadalnix added a comment. In http://reviews.llvm.org/D19299#406517, @spatel wrote: > Rereading your question, I'm now wondering if you are asking if we can get > rid of the source level builtin_unpredictable() ? I had not considered that, > but I think that is also possible if we add a flag to builtin_expect() to > mean 'this branch is unpredictable'. > > Please let me know if I answered the correct question. :) You did answer my question. I don't really mind source level intrinsic, I'm more concerned about the IR and how they are lowered. Overall I like where this is going. It looks like @davidxl is on it for the review, and he seems to have a good idea of where this should go, so I'll defer to him for acceptance/change requests. http://reviews.llvm.org/D19299 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D19105: Changes in clang after running http://reviews.llvm.org/D18821
deadalnix requested changes to this revision. This revision now requires changes to proceed. Comment at: include/llvm-c/Core.h:604 @@ -603,3 +603,3 @@ */ -LLVMBool LLVMPrintModuleToFile(LLVMModuleRef M, const char *Filename, +bool LLVMPrintModuleToFile(LLVMModuleRef M, const char *Filename, char **ErrorMessage); Please keep LLVMBool in the C API. ABI change are a NO NO. http://reviews.llvm.org/D19105 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D21515: Update clang for D21514. NFC
deadalnix created this revision. deadalnix added reviewers: ahatanak, bkramer, whitequark, mehdi_amini, void. deadalnix added a subscriber: cfe-commits. As per title. http://reviews.llvm.org/D21515 Files: lib/CodeGen/CGExpr.cpp Index: lib/CodeGen/CGExpr.cpp === --- lib/CodeGen/CGExpr.cpp +++ lib/CodeGen/CGExpr.cpp @@ -2735,10 +2735,11 @@ llvm::CallInst *CodeGenFunction::EmitTrapCall(llvm::Intrinsic::ID IntrID) { llvm::CallInst *TrapCall = Builder.CreateCall(CGM.getIntrinsic(IntrID)); - if (!CGM.getCodeGenOpts().TrapFuncName.empty()) -TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, - "trap-func-name", - CGM.getCodeGenOpts().TrapFuncName); + if (!CGM.getCodeGenOpts().TrapFuncName.empty()) { +auto A = llvm::Attribute::get(getLLVMContext(), "trap-func-name", + CGM.getCodeGenOpts().TrapFuncName); +TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, A); + } return TrapCall; } Index: lib/CodeGen/CGExpr.cpp === --- lib/CodeGen/CGExpr.cpp +++ lib/CodeGen/CGExpr.cpp @@ -2735,10 +2735,11 @@ llvm::CallInst *CodeGenFunction::EmitTrapCall(llvm::Intrinsic::ID IntrID) { llvm::CallInst *TrapCall = Builder.CreateCall(CGM.getIntrinsic(IntrID)); - if (!CGM.getCodeGenOpts().TrapFuncName.empty()) -TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, - "trap-func-name", - CGM.getCodeGenOpts().TrapFuncName); + if (!CGM.getCodeGenOpts().TrapFuncName.empty()) { +auto A = llvm::Attribute::get(getLLVMContext(), "trap-func-name", + CGM.getCodeGenOpts().TrapFuncName); +TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, A); + } return TrapCall; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D21515: Update clang for D21514. NFC
deadalnix updated this revision to Diff 62791. deadalnix added a comment. rebase/ping http://reviews.llvm.org/D21515 Files: lib/CodeGen/CGExpr.cpp Index: lib/CodeGen/CGExpr.cpp === --- lib/CodeGen/CGExpr.cpp +++ lib/CodeGen/CGExpr.cpp @@ -2753,10 +2753,11 @@ llvm::CallInst *CodeGenFunction::EmitTrapCall(llvm::Intrinsic::ID IntrID) { llvm::CallInst *TrapCall = Builder.CreateCall(CGM.getIntrinsic(IntrID)); - if (!CGM.getCodeGenOpts().TrapFuncName.empty()) -TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, - "trap-func-name", - CGM.getCodeGenOpts().TrapFuncName); + if (!CGM.getCodeGenOpts().TrapFuncName.empty()) { +auto A = llvm::Attribute::get(getLLVMContext(), "trap-func-name", + CGM.getCodeGenOpts().TrapFuncName); +TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, A); + } return TrapCall; } Index: lib/CodeGen/CGExpr.cpp === --- lib/CodeGen/CGExpr.cpp +++ lib/CodeGen/CGExpr.cpp @@ -2753,10 +2753,11 @@ llvm::CallInst *CodeGenFunction::EmitTrapCall(llvm::Intrinsic::ID IntrID) { llvm::CallInst *TrapCall = Builder.CreateCall(CGM.getIntrinsic(IntrID)); - if (!CGM.getCodeGenOpts().TrapFuncName.empty()) -TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, - "trap-func-name", - CGM.getCodeGenOpts().TrapFuncName); + if (!CGM.getCodeGenOpts().TrapFuncName.empty()) { +auto A = llvm::Attribute::get(getLLVMContext(), "trap-func-name", + CGM.getCodeGenOpts().TrapFuncName); +TrapCall->addAttribute(llvm::AttributeSet::FunctionIndex, A); + } return TrapCall; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits