<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 9, 2017 at 12:09 PM, Tim Shen <span dir="ltr"><<a href="mailto:timshen@google.com" target="_blank">timshen@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><div class="h5"><div dir="ltr">On Thu, Feb 9, 2017 at 10:15 AM Daniel Berlin <<a href="mailto:dberlin@dberlin.org" target="_blank">dberlin@dberlin.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986gmail_msg">On Thu, Feb 9, 2017 at 10:01 AM, David Blaikie <span dir="ltr" class="m_4535530367580758986gmail_msg"><<a href="mailto:dblaikie@gmail.com" class="m_4535530367580758986gmail_msg" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br class="m_4535530367580758986gmail_msg"><blockquote class="gmail_quote m_4535530367580758986gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4535530367580758986gmail_msg"><br class="m_4535530367580758986gmail_msg"><br class="m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986gmail_msg"><div class="m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567h5 m_4535530367580758986gmail_msg"><div dir="ltr" class="m_4535530367580758986gmail_msg">On Thu, Feb 9, 2017 at 9:37 AM Daniel Berlin <<a href="mailto:dberlin@dberlin.org" class="m_4535530367580758986gmail_msg" target="_blank">dberlin@dberlin.org</a>> wrote:<br class="m_4535530367580758986gmail_msg"></div><blockquote class="gmail_quote m_4535530367580758986gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">On Thu, Feb 9, 2017 at 9:23 AM, David Blaikie <span dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><<a href="mailto:dblaikie@gmail.com" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><blockquote class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><span class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">On Thu, Feb 9, 2017 at 8:14 AM Daniel Berlin via Phabricator <<a href="mailto:reviews@reviews.llvm.org" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg" target="_blank">reviews@reviews.llvm.org</a>> wrote:<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div><blockquote class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">dberlin created this revision.<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">
Herald added a reviewer: tstellarAMD.<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">
Herald added subscribers: nhaehnle, arsenm.<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">
<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">
Convert all obvious node_begin/node_end and child_begin/child_end<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">
pairs to range based for.<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">
<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">
Sending for review in case someone has a good idea how to make<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">
graph_children able to be inferred. It looks like it would require<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">
changing GraphTraits to be two argument or something. I presume<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">
inference does not happen because it would have to check every<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">
GraphTraits in the world to see if the noderef types matched.<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663m_3897984082116298221m_7542136315290529828gmail_msg m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></blockquote><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div></span><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">Yep, that. One could use an extra trait for the node type to map it back to the graph trait to facilitate this - but that'd also mean each node type would have to be unique to the graph type (which is probably true - but one could imagine different graphs over the same nodes? Maybe... maybe not)<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div></div></div></blockquote><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div></div></div></div><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">We have different graphs over the same nodes already.</div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">The nodes of a graph of the function *are basicblock *</div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">the nodes of a graph of basicblock * are also basicblock *</div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">But they are not the same graph :)<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">This only currently works through chicanery, IMHO. It would be nice to be able to define different graphs over the same types, but i'm not up for rewriting all of graph traits ATM.</div></div></div></div><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"> <br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div><blockquote class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">Did you consider changing the trait so they exposed range accessors directly, instead of adding utility functions?<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div></div></div></blockquote><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div></div></div></div><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">I can't figure out a way to do this.</div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">The base class traits have *nothing* in them.</div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"> </div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">This was the best i could do without "rewrite graphtraits completely".</div></div></div></div><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div><blockquote class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">"graph_children(graph)" is a bit of an awkward construct </div></div></div></blockquote><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div></div></div></div><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">Note that if i put it in the traits, i believe this would get worse, not matter.</div></div></div></div></blockquote><div class="m_4535530367580758986gmail_msg"><br class="m_4535530367580758986gmail_msg"></div></div></div><div class="m_4535530367580758986gmail_msg">How so? Worse in terms of implementation complexity, or user complexity?<br class="m_4535530367580758986gmail_msg"></div></div></div></blockquote><div class="m_4535530367580758986gmail_msg"><br class="m_4535530367580758986gmail_msg"></div></div></div></div><div dir="ltr" class="m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986gmail_msg"><div class="m_4535530367580758986gmail_msg">User complexity. You would have to call it through graph traits, so it would make user complexity worse.</div><div class="m_4535530367580758986gmail_msg">Unless i'm missing something?</div></div></div></div><div dir="ltr" class="m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986gmail_msg"><div class="m_4535530367580758986gmail_msg"><br class="m_4535530367580758986gmail_msg"></div><div class="m_4535530367580758986gmail_msg"><br class="m_4535530367580758986gmail_msg"></div><blockquote class="gmail_quote m_4535530367580758986gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986gmail_msg"><div class="m_4535530367580758986gmail_msg">ting an undesirable asymmetry perhaps?)</div><span class="m_4535530367580758986gmail_msg"><div class="m_4535530367580758986gmail_msg"> </div><blockquote class="gmail_quote m_4535530367580758986gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"> </div><blockquote class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">. Alternatively maybe drop the graph_ prefix - ADL/overload resolution/etc will make it correct anyway, so just "children(graph)", etc?<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div></div></div></blockquote><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div></div></div></div><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">I'm happy to drop the prefix.</div></div></div></div><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"> <br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"> </div><blockquote class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">(re: your other comment, I'm not sure I quite followed:<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">"<span style="color:rgb(33,33,33);font-size:13px" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">Note that this use of const auto & is required to make clang build, as the iterator type it for CFG blocks ends up returning blocks directly otherwise here." - not sure I quite follow. Best guess/reading is that the CFG's iterators' value type is heavyweight, but most other GraphTraits types have lightweight nodes that are cheap to copy? (like pointers, etc)<br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></span></div></div></div></blockquote><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div></div></div></div><div dir="ltr" class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">Sorta.</div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"><br class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg"></div><div class="m_4535530367580758986m_-187810200401825567m_-3930751673206886663gmail_msg m_4535530367580758986gmail_msg">First, graph traits doesn't work on anything but pointers.</div></div></div></div></blockquote><div class="m_4535530367580758986gmail_msg"><br class="m_4535530367580758986gmail_msg"></div></span><div class="m_4535530367580758986gmail_msg">Ah, I thought Tim (added Tim Shen to this thread) made this not be the case anymore recently, I forget what the motivation was, and maybe it didn't end up being needed/done.</div></div></div></blockquote><div class="m_4535530367580758986gmail_msg"><br class="m_4535530367580758986gmail_msg"></div></div></div></div><div dir="ltr" class="m_4535530367580758986gmail_msg"><div class="gmail_extra m_4535530367580758986gmail_msg"><div class="gmail_quote m_4535530367580758986gmail_msg"><div class="m_4535530367580758986gmail_msg">Yes, sorry, It now works on references, but still not value types.</div></div></div></div></blockquote><div><br></div></div></div><div>NodeRef as value type? I created a trait type with NodeRef as a pair, see include/llvm/Analysis/<wbr>LoopIterator.h.</div><span class=""><div> </div></span></div></div></blockquote><div><br>Interesting.</div><div>I tried this before and couldn't get it to work.</div><div>Now i'm going to go stare ;)<br> </div><div>Maybe it was in the middle of your patch set or something.</div><div><br></div></div></div></div>