[clang] [clang] Use getDefaultArgRange instead of getDefaultArg to retrieve the (PR #79296)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 24 06:38:49 PST 2024
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
More information about the cfe-commits
mailing list