llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Haojian Wu (hokein)

<details>
<summary>Changes</summary>

source location in AliasTemplateDeductionGuideTransform.

I don't have a reproducible testcase, but this should be a safe and 
non-functional change. We have checked the `hasDefaultArg` before calling 
getDefaultArg(), but `hasDefaultArg` allows unparsed/uninstantiated default arg 
which is prohibited in getDefaultArg().

Since we're only interested in the source location, we switch to use 
getDefaultArgRange() API.

Context: I hit the "!hasUninstantiatedDefaultArg()" assertion inside the 
getDefaultArg when reusing the "transformFunctionTypeParam" for type alias CTAD 
implementation 
(https://github.com/llvm/llvm-project/pull/77890/commits/f0919914f828daf705f89317081946359f00971a).

---
Full diff: https://github.com/llvm/llvm-project/pull/79296.diff


1 Files Affected:

- (modified) clang/lib/Sema/SemaTemplate.cpp (+1-1) 


``````````diff
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index 9bfa71dc8bcf1db..a5d2afdf4a0bab8 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -2588,7 +2588,7 @@ struct ConvertConstructorToDeductionGuideTransform {
       // placeholder to indicate there is a default argument.
       QualType ParamTy = NewDI->getType();
       NewDefArg = new (SemaRef.Context)
-          OpaqueValueExpr(OldParam->getDefaultArg()->getBeginLoc(),
+          OpaqueValueExpr(OldParam->getDefaultArgRange().getBegin(),
                           ParamTy.getNonLValueExprType(SemaRef.Context),
                           ParamTy->isLValueReferenceType()   ? VK_LValue
                           : ParamTy->isRValueReferenceType() ? VK_XValue

``````````

</details>


https://github.com/llvm/llvm-project/pull/79296
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to