<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<br>
<div class="moz-cite-prefix">On 02/07/2014 11:45 AM, Chandler
Carruth wrote:<br>
</div>
<blockquote
cite="mid:CAGCO0Kiuah3mO2vtLCC8gOJP79sXBx=9T8k1wz-329WYg0cy7Q@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra"><br>
<div class="gmail_quote">On Fri, Feb 7, 2014 at 11:29 AM,
Chris Lattner <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:clattner@apple.com" target="_blank">clattner@apple.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="">On Feb 1, 2014, at 4:33 AM, Chandler Carruth
<<a moz-do-not-send="true"
href="mailto:chandlerc@gmail.com">chandlerc@gmail.com</a>>
wrote:<br>
<br>
> So, there are two primary ideas behind SSA form
management in the loop optimizers of LLVM:<br>
><br>
> - Require LCSSA form input, leverage its (very
powerful) guarantees to simplify maintaining SSA form,
and also maintain LCSSA form.<br>
><br>
> - Don't bother with LCSSA form input, assume the
worst, and use powerful incremental SSA formation
utilities built on SSAUpdater to form SSA on demand when
needed.<br>
><br>
> (Note, there are plenty of places where SSAUpdater
makes sense, so this isn't really about doing away with
it at all.)<br>
<br>
</div>
It’s worth noting that LCSSA predates SSAUpdater. If I
went back in time and knew what I knew now, I wouldn’t
have gone with LCSSA.<br>
<br>
My gripes are three fold: </blockquote>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">1)
SSAUpdater can handle anything that LCSSA simplifies</blockquote>
<div><br>
</div>
<div>Yes, it can, but it is *significantly* less simple. I
think the simplicity of reasoning and handling things with
LCSSA is not without value.<br>
</div>
</div>
</div>
</div>
</blockquote>
I strongly agree with this. I recently looked at using LCSSA vs
SSAUpdater for an out-of-tree pass I'm working on and quickly
settled on LCSSA due to its simplicity. I may revisit that decision
someday if performance proves problematic, but for initial
prototyping, LCSSA was a major win.<br>
<br>
Part of that is that I never really found clear documentation on
what SSAUpdater actually did and how to use it. There's some
documentation in the header, but it's not exactly obvious on first
read.<br>
<br>
Philip<br>
<br>
<br>
</body>
</html>