Wow, thanks so much for doing this. I haven't had much time to work on the union stuff recently, work has been kind of crazy lately...<br><br><div class="gmail_quote">On Mon, Mar 15, 2010 at 2:30 PM, Tim Northover <span dir="ltr"><<a href="mailto:T.P.Northover@sms.ed.ac.uk">T.P.Northover@sms.ed.ac.uk</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On Mon, Mar 15, 2010 at 11:51:47AM +0000, Tim Northover wrote:<br>
> Hello,<br>
><br>
> I noticed a bit of a gap in the current code for unions: a<br>
> ConstantUnion cannot be written out to .ll.<br>
<br>
</div>I've been continuing plugging gaps as I find them, which might not be<br>
the best way to solve this problem, but it has produced something that<br>
seems to do roughly what I expect.<br>
<br>
I've split it into three broadly independent patches<br>
<br>
1: bitcodeUnion.patch. Again writing constants, I think we need to send<br>
the type index along with the actual data. I've (ab?)used the Aggregate<br>
abbreviation still.<br>
<br>
2: asmUnion.patch. Code to emit constant unions as native assembly. Also<br>
includes handling of GEP.<br>
<br>
3: layoutUnion.patch. I added functions to calculate the required<br>
size and alignment for unions. I wasn't sure whether to assume alignment<br>
was a power of 2. If not, that function probably needs changing to take<br>
a running lcm rather than maximum.<br>
<br>
Together these seem to allow both "llvm-as | llvm-dis" and "llvm-as |<br>
llc" on the following fragment:<br>
<br>
%un = type union { {i8, i8}, i32, i8 }<br>
@val = constant %un { i32 42 }<br>
<br>
I'm slightly concerned about the ".align 3" I get for arm (and x86 as I<br>
recall), but the same happens with structs so I don't think it's<br>
related.<br>
<br>
Any comments or requests to please stop bugging you fine.<br>
<font color="#888888"><br>
Tim.<br>
</font><br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>-- Talin<br>