It is in misc-ps-region-store.cpp<div><br></div><div><div>class Test3_Base {};</div><div>class Test3_Derived : public Test3_Base {};</div><div><br></div><div>int test3_aux(Test3_Base &x);</div><div>int test3(Test3_Derived x) {</div>
<div>  return test3_aux(x);</div><div>}</div><br><div class="gmail_quote">On Thu, Dec 23, 2010 at 3:49 AM, Ted Kremenek <span dir="ltr"><<a href="mailto:kremenek@apple.com">kremenek@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Test case?<br>
<div><div></div><div class="h5"><br>
On Dec 22, 2010, at 12:12 AM, Zhongxing Xu wrote:<br>
<br>
> Author: zhongxingxu<br>
> Date: Wed Dec 22 02:12:57 2010<br>
> New Revision: 122393<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=122393&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=122393&view=rev</a><br>
> Log:<br>
> The base type is not always pointer type. We may cast to a base reference.<br>
><br>
> Modified:<br>
>    cfe/trunk/lib/Checker/RegionStore.cpp<br>
><br>
> Modified: cfe/trunk/lib/Checker/RegionStore.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/RegionStore.cpp?rev=122393&r1=122392&r2=122393&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/RegionStore.cpp?rev=122393&r1=122392&r2=122393&view=diff</a><br>

> ==============================================================================<br>
> --- cfe/trunk/lib/Checker/RegionStore.cpp (original)<br>
> +++ cfe/trunk/lib/Checker/RegionStore.cpp Wed Dec 22 02:12:57 2010<br>
> @@ -807,9 +807,15 @@<br>
>   return loc::MemRegionVal(MRMgr.getElementRegion(T, ZeroIdx, ArrayR, Ctx));<br>
> }<br>
><br>
> -SVal RegionStoreManager::evalDerivedToBase(SVal derived, QualType basePtrType) {<br>
> -  const CXXRecordDecl *baseDecl = basePtrType->getCXXRecordDeclForPointerType();<br>
> +SVal RegionStoreManager::evalDerivedToBase(SVal derived, QualType baseType) {<br>
> +  const CXXRecordDecl *baseDecl;<br>
> +  if (baseType->isPointerType())<br>
> +    baseDecl = baseType->getCXXRecordDeclForPointerType();<br>
> +  else<br>
> +    baseDecl = baseType->getAsCXXRecordDecl();<br>
> +<br>
>   assert(baseDecl && "not a CXXRecordDecl?");<br>
> +<br>
>   loc::MemRegionVal &derivedRegVal = cast<loc::MemRegionVal>(derived);<br>
>   const MemRegion *baseReg =<br>
>     MRMgr.getCXXBaseObjectRegion(baseDecl, derivedRegVal.getRegion());<br>
><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br>
</div></div></blockquote></div><br></div>