<br><br><div class="gmail_quote">2011/9/20 Reid Kleckner <span dir="ltr"><<a href="mailto:reid.kleckner@gmail.com">reid.kleckner@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Sun, Sep 18, 2011 at 10:48 PM, David Meyer <<a href="mailto:pdox@google.com">pdox@google.com</a>> wrote:<br>
> One idea would be to have a bitcode -> bitcode pass which is<br>
> responsible for lowering the higher-level representations (structs,<br>
> unions, complex) down to simple types, in a target-specific way. This<br>
> includes coercing parameters, expanding va_arg, and so on. This would<br>
> move the target-specific lowering into LLVM and out of the front-ends.<br>
> (This pass would be idempotent)<br>
<br>
</div>This idea of a ABI-neutral IR layer has come up before (can't find the<br>
link), which probably means that it's worth considering.  I don't know<br>
if it means it's a good idea or if it's just a bad idea that looks<br>
good.  :)<br>
<br>
In any case, the ability to generate target-neutral bitcode seems to<br>
me like the most commonly requested enhancement.  I think the LLVM<br>
project should either reject it outright as a non-goal or decide on<br>
the future direction for how to achieve it.  OTOH this is an open<br>
source project with many stakeholders with different priorities, so<br>
it's hard to make that kind of decision.<br>
<br>
...<br>
<br>
If you do want to add the target-neutral IR layer, it's probably best<br>
to completely avoid optimizing such bitcode, because it's likely to<br>
create bugs in the optimizers that don't expect FCAs, unions,<br>
bitfields, pointer-sized integers, etc to be there.<br>
<font color="#888888"><br>
Reid<br>
</font><div><div></div><div class="h5">_______________________________________________<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>
</div></div></blockquote></div><br>Since we are talking about target independent representation I feel compelled to post a link to one of the presentation of the last LLVM Developer meeting (Sept 16th): <a href="http://llvm.org/devmtg/2011-09-16/EuroLLVM2011-MoreTargetIndependentLLVMBitcode.pdf">http://llvm.org/devmtg/2011-09-16/EuroLLVM2011-MoreTargetIndependentLLVMBitcode.pdf</a><br>
<br>The author explains at lengths the various ways in which LLVM is target dependent and speaks about WordCode, a target independent IR that can be lowered in a subsequent pass.<br><br>I don't know whether it's immediately usable for PNaCl, but I hope it might help the discussion.<br>
<br>-- Matthieu<br>