<div>On Fri, Oct 19, 2012 at 1:56 PM, Matthew Curtis <span dir="ltr"><<a href="mailto:mcurtis@codeaurora.org" target="_blank">mcurtis@codeaurora.org</a>></span> wrote:</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  

    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Hello all,<br>
    <br>
    I'm seeing an assert when compiling code like this:<br>
    <br>
    <blockquote>template <int i> struct X { };<br>
      void f(X<8> x) {<br>
        X<7> y;<br>
        y = x;<br>
      }<br>
    </blockquote>
    <br>
    DiffTemplate/GetExpr (in ASTDiagnostic.cpp) assumes that the
    non-type args are expressions:<br>
    <blockquote>void DiffTemplate() {<br>
      <br>
        // Handle Expressions<br>
        if (NonTypeTemplateParmDecl *DefaultNTTPD =<br>
            dyn_cast<NonTypeTemplateParmDecl>(ParamND)) {<br>
          Expr *FromExpr, *ToExpr;<br>
          GetExpr(FromIter, DefaultNTTPD, FromExpr);<br>
          GetExpr(ToIter, DefaultNTTPD, ToExpr);<br>
        }<br>
      <br>
      }<br>
    </blockquote>
    <blockquote>void GetExpr(const TSTiterator &Iter, ) {<br>
      <br>
        if (!Iter.isEnd())<br>
          ArgExpr = Iter->getAsExpr();<br>
      <br>
      }<br>
    </blockquote>
    <br>
    But in some cases they are integral values (e.g. Iter->getKind()
    == TemplateArgument::Integral). As a result, an assertion inside
    Iter->getAsExpr() fails.<br>
    <br>
    Is DiffTemplate broken or should the integral arg never have found
    it's way to it?<br>
    <br>
    BTW, I modified GetExpr to create an Expr from the Integral arg and
    that seemed to work, but I'm not sure if that's the right thing to
    do.<br>
    <br>
    Cheers,<br>
    Matthew C.<span class="HOEnZb"><font color="#888888"><br>
    <br>
     <br>
    <pre cols="72">-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation</pre>
  </font></span></div>

<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><div><br></div><div>This was reported in PR14015.  I have created a patch to fixed this issue.  See the posting below on cfe-commits.</div><br><div><a href="http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20121008/065792.html">http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20121008/065792.html</a></div>