<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/96670>96670</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            template parameter comparison against default value doesn't handle LValue
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          DanielJump
      </td>
    </tr>
</table>

<pre>
    An assertion is thrown here for this code. APValue is an LValue, not an Int.
This is against release/18.x

```
inline constexpr long ullNil = -1;

template<typename T = long, const T &Nil = ullNil>
struct Test {};

inline constexpr long lNil = -1;
Test<long, lNil> c;
```

```
 #6 0x00007ff608f49f7c clang::APValue::isInt Z:\repos\llvm\clang\include\clang\AST\APValue.h:401:0
 #7 0x00007ff608f49f7c clang::APValue::getInt Z:\repos\llvm\clang\include\clang\AST\APValue.h:424:0
 #8 0x00007ff608f49f7c clang::Expr::EvaluateKnownConstInt(class clang::ASTContext const &, class llvm::SmallVectorImpl<struct std::pair<class clang::SourceLocation, class clang::PartialDiagnostic>> *) const Z:\repos\llvm\clang\lib\AST\ExprConstant.cpp:15862:0
 #9 0x00007ff608e0e3d7 llvm::APSInt::isSameValue Z:\repos\llvm\llvm\include\llvm\ADT\APSInt.h:320:0
#10 0x00007ff608e0e3d7 templateArgumentExpressionsEqual Z:\repos\llvm\clang\lib\AST\TypePrinter.cpp:2135:0
#11 0x00007ff608e021d8 isSubstitutedTemplateArgument Z:\repos\llvm\clang\lib\AST\TypePrinter.cpp:2160:0
#12 0x00007ff608e01fec clang::isSubstitutedDefaultArgument(class clang::ASTContext &, class clang::TemplateArgument, class clang::NamedDecl const *, class llvm::ArrayRef<class clang::TemplateArgument>, unsigned int) Z:\repos\llvm\clang\lib\AST\TypePrinter.cpp:2199:0
#13 0x00007ff60824dbb3 clang::TemplateArgument::setIsDefaulted Z:\repos\llvm\clang\include\clang\AST\TemplateBase.h:389:0
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysls2O4ygXhq-GbFBFGPwTL7xwORWpvq_VKk2iXsyO4GOHEQYP4Pq5-xG2U4nTUbd6eqSSXZDDex5eDhjunGw1QIGSR5RsV3zwJ2OLLdcS1P-Grl8dTf1RlBpz58B6aTSWDvuTNW8an8ACbozF_iQdFqaGNS5fvnE1QIjiGn8ZG4hWWBsfOp61XyOyRaQ8hDEhquVSO48tKOAOEN1Fm_X7FDM_UzL_jU2pldSAhdHOw3tvsTK6xYNSX6XCiG3xQ4TY47WAh65X3ANilf_oQfMO8GEMDUMD3SgW-mh6VpkEEXuaNJy3g_D4AM5jlD2ibHuT5D7WPaiggVh1zj2nweIiuJzw3U6MKEsxeSeEkKxpUrJp4rzJBBaK6xaxErFyXoupId2z9vjP0EgqC71xKKmUeu1QUk1jkkpqoYYarnrK_SE8J6H1CbEyJhFi5RVF9isULfj_CIPGS4zNTzCe3ns7__fK1cA9_F-bN12F9XrWHtGNUNy5Bfn-UBnt4d3PBYJoOlbLGDhCj3H7jiv1DYQ39rnrFWLVXC3O11NEz6VFrPouw94MVsAXI3jYWhftq5AXbr3kait5q43zUoSSZE8Y0RLRfAb7sZ9KHj89DDaMc-bar0XfI1ZGySalSzPzhZlAgNXZ1YTLl32wbK6rPe9g2vT3MebXZVXnjnI7LWrQGteUUXLBQJRF5B7GeTeXth060D7MCJyTRrunvweufsGMw0cPL1ZqD3b2gkYsWTJENww0qjdYuv1wdF76wUN9uAH6TYD0xgR6AxA1sCjsBcsWGj4of0b5SVUv6vkq5HZGd4O-8i7kE-pzc5T3NkdpLf_4A5p75f9dHvYUJAY9fpVqLEPq_Df9zPOln2zhJ43r45H9GCr0OvDPbnYX6n95gJ2lH7mbTjG2uYY7n_CrumB1znK-giLKopyxTRpHq1MR06RJsmPKhUhTEeeNSFkkRMPSJCN5lK5kQQmNSUqTaENiEq0TLjZ1Wjdp1lBKogzFBDou1ToQr41tV9K5AYo8TTOyUvwIyo2XAUo1vOHxR0RpuBvYIox5OA6tQzFR0nl3UfHSKyjOWxP33PIOPFgsTNdzK53Rn1_6enIRv45nRm3AaUQzj09c1wrmO8NqsKo4ed-74DTdIbprpT8Nx7UwHaK70fHp9dBb8xcIj-hu5HWI7qb5vBb0nwAAAP__jFa61A">