<div dir="ltr"><div>The resolution is done after the name resolution because the name creation depend on it. If the name is a simple string, then the multiclass prefix is not added. That seems like a bizarre design to me but it is already workign that way, so I just extended the existing design.<br>


<br></div>Changing this design would probably break most backends, and it is probably not worth it. Removing the {} and coming back with an updated patch.<br><div class="gmail_extra"><br><br><div class="gmail_quote">2014-06-30 11:39 GMT-07:00 Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span>:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">----- Original Message -----<br>
> From: "deadal nix" <<a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a>><br>
> To: <a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
> Sent: Monday, June 30, 2014 1:24:44 PM<br>
> Subject: Re: [PATCH] [tablegen] Resolve complex def identifiers when  instanciating multiclass<br>
><br>
><br>
><br>
> PING ?<br>
><br>
<br>
Please wait 1 week in between pings for non-urgent patches. That having been said, thanks for working on this.<br>
<br>
+    DefName = CurRec->getNameInit();<br>
+    DefNameString = dyn_cast<StringInit>(DefName);<br>
+<br>
+    // OK the pattern is more complex than simply using NAME.<br>
+    // Let's use the heavy weaponery.<br>
+    if (!DefNameString) {<br>
+      ResolveMulticlassDefArgs(MC, CurRec, DefmPrefixRange.Start, Lex.getLoc(),<br>
+                               TArgs, TemplateVals, false/*Delete args*/);<br>
+<br>
+      DefName = CurRec->getNameInit();<br>
+      DefNameString = dyn_cast<StringInit>(DefName);<br>
<br>
Why are we only calling ResolveMulticlassDefArgs when we can't resolve the name? It seems somewhat funny to have the argument resolution state depend on the kind of name that is used. Does something break if you always call this?<br>



<br>
<br>
+      if (!DefNameString) {<br>
+        DefName = DefName->convertInitializerTo(StringRecTy::get());<br>
+      }<br>
<br>
Remove the {} here.<br>
<br>
Thanks,<br>
Hal<br>
<div><div><br>
><br>
><br>
><br>
> 2014-06-26 23:27 GMT-07:00 deadal nix < <a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a> > :<br>
><br>
><br>
><br>
> ping !!?!<br>
><br>
><br>
><br>
><br>
> 2014-06-24 16:02 GMT-07:00 deadal nix < <a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a> > :<br>
><br>
><br>
><br>
><br>
> ping \o/<br>
><br>
><br>
><br>
><br>
> 2014-06-23 0:22 GMT-07:00 deadal nix < <a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a> > :<br>
><br>
><br>
><br>
><br>
> As per title. I ran into tablegen limitations that are annoying,<br>
> namely that I couldn't generate custom name for def inside<br>
> multiclass. So here is the fix.<br>
><br>
><br>
><br>
><br>
</div></div>> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
><br>
<span><font color="#888888"><br>
--<br>
Hal Finkel<br>
Assistant Computational Scientist<br>
Leadership Computing Facility<br>
Argonne National Laboratory<br>
</font></span></blockquote></div><br></div></div>