<br>I have a few pass managers, but only one of them has been initialized with addPassesToEmitCode, how do I find how many passes are added to a function pass manager ? <div><br></div><div>Thank you,</div><div>Xin </div><div>
<br><div class="gmail_quote">On Fri, May 20, 2011 at 1:00 PM,  <span dir="ltr"><<a href="mailto:llvmdev-request@cs.uiuc.edu">llvmdev-request@cs.uiuc.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Send LLVMdev mailing list submissions to<br>
        <a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:llvmdev-request@cs.uiuc.edu">llvmdev-request@cs.uiuc.edu</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:llvmdev-owner@cs.uiuc.edu">llvmdev-owner@cs.uiuc.edu</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of LLVMdev digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1. Re: LLVM wiki to be removed 5/19 (Tanya Lattner)<br>
   2. MCSection and Win64 Exception Handling (Charles Davis)<br>
   3. Re: subregisters, def-kill (Jakob Stoklund Olesen)<br>
   4. Reserving registers that depend on spilled code (Borja Ferrer)<br>
   5. Re: x86 cross compiler for ppc fails to build (???)<br>
   6. Re: subregisters, def-kill (Jonas Paulsson)<br>
   7. Re: x86 cross compiler for ppc fails to build (Duncan Sands)<br>
   8. Re: x86 cross compiler for ppc fails to build (Kalle Raiskila)<br>
   9. Re: [PATCH] OpenCL half support (Anton Lokhmotov)<br>
  10. Compile a project into LLVM Bitcode (Julien Henry)<br>
  11. Re: Compile a project into LLVM Bitcode (Philip Ritchey)<br>
  12. Re: Compile a project into LLVM Bitcode (Julien Henry)<br>
  13. Re: Compile a project into LLVM Bitcode (John Criswell)<br>
  14. Re: subregisters, def-kill (Jakob Stoklund Olesen)<br>
  15. I want to know examples of recursive types on LLVM IR.<br>
      (Jin Gu Kang)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Thu, 19 May 2011 14:10:49 -0700<br>
From: Tanya Lattner <<a href="mailto:lattner@apple.com">lattner@apple.com</a>><br>
Subject: Re: [LLVMdev] LLVM wiki to be removed 5/19<br>
To: LLVM Developers Mailing List <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
Message-ID: <<a href="mailto:4D7A407D-AEBD-4CA7-BE2F-762DB366DD08@apple.com">4D7A407D-AEBD-4CA7-BE2F-762DB366DD08@apple.com</a>><br>
Content-Type: text/plain; CHARSET=US-ASCII<br>
<br>
The time has come. The wiki will be removed.<br>
<br>
Thanks,<br>
Tanya<br>
<br>
On May 10, 2011, at 4:43 PM, Tanya Lattner wrote:<br>
<br>
> Just a reminder. You have a little over a week to move information over.<br>
><br>
> Thank you,<br>
> Tanya<br>
><br>
> On Apr 19, 2011, at 10:35 AM, Tanya Lattner wrote:<br>
><br>
>> LLVMers,<br>
>><br>
>> The LLVM wiki will be removed on May 19th. It would be great if people could move any important content to the LLVM docs before this happens.<br>
>><br>
>> There are three main reasons for removing the wiki:<br>
>> 1) It is full of spam.<br>
>> 2) It is bad to have documentation in two very separate places.<br>
>> 3) The documentation over there is not getting reviewed.<br>
>><br>
>> While I am sure this may be upsetting to some, we feel that all documentation should be treated consistently in the project, and the wiki runs counter to this.  That said, we don't want to lose any of the useful content that is still on the wiki, so we're going to keep it around for this month to allow time to merge content from the wiki into the other documentation.<br>

>><br>
>> Thanks,<br>
>> Tanya<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>
> _______________________________________________<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>
<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Thu, 19 May 2011 15:51:12 -0600<br>
From: Charles Davis <<a href="mailto:cdavis@mymail.mines.edu">cdavis@mymail.mines.edu</a>><br>
Subject: [LLVMdev] MCSection and Win64 Exception Handling<br>
To: LLVM Developers Mailing List <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
Message-ID: <<a href="mailto:4DD590D0.8030808@mymail.mines.edu">4DD590D0.8030808@mymail.mines.edu</a>><br>
Content-Type: text/plain; charset=ISO-8859-1<br>
<br>
Hi,<br>
<br>
As you know if you've been watching llvm-commits, I've been working on<br>
Win64 exception handling support in LLVM. Unfortunately, I've hit a bit<br>
of a snag.<br>
<br>
I recently learned that GAS implemented its own set of Win64 EH<br>
directives. I've made ours compatible with GAS, but one problem remains.<br>
<br>
GAS's .seh_handlerdata directive is used to declare data that belongs in<br>
the language-specific handler's data area. The way it works in GAS is<br>
that it creates a pseudo-section containing the data that is later<br>
written to the unwind info structure. For LLVM, I suspect I have to do<br>
something similar. Trouble is, MCSection doesn't really support any<br>
pseudo-sections. It only supports physical sections inside of an object<br>
file.<br>
<br>
Unless someone has a better idea for implementing .seh_handlerdata, I<br>
need to extend MCSection to support sections that don't really<br>
physically exist, and then add support for writing the pseudo section<br>
anywhere in the object file. Does anyone have a better idea?<br>
<br>
Chip<br>
<br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Thu, 19 May 2011 15:39:40 -0700<br>
From: Jakob Stoklund Olesen <<a href="mailto:stoklund@2pi.dk">stoklund@2pi.dk</a>><br>
Subject: Re: [LLVMdev] subregisters, def-kill<br>
To: Jonas Paulsson <<a href="mailto:jnspaulsson@hotmail.com">jnspaulsson@hotmail.com</a>><br>
Cc: LLVMDEV <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
Message-ID: <<a href="mailto:6C95FA0C-60E9-41CD-85E5-6DA0B11E7913@2pi.dk">6C95FA0C-60E9-41CD-85E5-6DA0B11E7913@2pi.dk</a>><br>
Content-Type: text/plain; CHARSET=US-ASCII<br>
<br>
<br>
On May 19, 2011, at 7:47 AM, Jonas Paulsson wrote:<br>
<br>
> Hi,<br>
><br>
> I am combining 16-bit registers to a 32 bit register in order to make a wide store, as per below:<br>
><br>
> 732 %reg16506:hi16<def,dead> = COPY %reg16445<kill>;<br>
> 740 %reg16506:lo16<def> = COPY %reg16468<kill>;<br>
> 748 %r3<def,dead> = store %reg16506<kill>, %r3,<br>
><br>
> As you can see, LiveVariables has marked the high part dead, even though the super-register is used at SlotIndex 748. Why is this? Should I add anything special to the basic BuildMI calls?<br>
<br>
That code is not in SSA form as LiveVariables requires, there can only be one def per virtual register. You need to use INSERT_SUBREG or REG_SEQUENCE to do this.<br>
<br>
/jakob<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Fri, 20 May 2011 01:24:21 +0200<br>
From: Borja Ferrer <<a href="mailto:borja.ferav@gmail.com">borja.ferav@gmail.com</a>><br>
Subject: [LLVMdev] Reserving registers that depend on spilled code<br>
To: <a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a><br>
Message-ID: <<a href="mailto:BANLkTik%2Bh2dnK8yap-o7sFw38-Xn4r_%2BLg@mail.gmail.com">BANLkTik+h2dnK8yap-o7sFw38-Xn4r_+Lg@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
Hello,<br>
<br>
I would like to reserve a register or make it available to the register<br>
allocator depending if the stack is used inside a function or not. By using<br>
the stack i mean the following: if all regs are spilled so that frame space<br>
has to be allocated, arguments passed through the stack and allocas. I know<br>
how to get the last two options when the register allocator is run since<br>
that info is already available, but how can you know if all regs are going<br>
to be spilled? I can only think that to get this information you need to run<br>
the allocator to see if there are frame indices inserted because it ran out<br>
of regs and then re run it again reserving this specific reg so there are no<br>
conflicts during prolog/epilog insertion.<br>
<br>
The reserved reg is the one used to access the frame indices and the stack,<br>
so if it's allocated in a function that makes use of the stack then there's<br>
a going to be a conflict. Otherwise if it's always reserved, it's a very<br>
precious waste because this arch has only 2 regs that are able to access<br>
memory so if one is always reserved you can imagine that things get very<br>
suboptimal regarding memory accesses.<br>
<br>
I've thought something like running the allocator once, and if frame indices<br>
get inserted meaning that all regs got spilled, re run it reserving this<br>
specific reg, otherwise the allocation was valid and the reg can be used<br>
freely inside the function.<br>
<br>
Thanks<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <a href="http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20110520/0b4e1ad2/attachment-0001.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20110520/0b4e1ad2/attachment-0001.html</a><br>

<br>
------------------------------<br>
<br>
Message: 5<br>
Date: Fri, 20 May 2011 09:39:13 +0800<br>
From: ??? <<a href="mailto:chenwj@iis.sinica.edu.tw">chenwj@iis.sinica.edu.tw</a>><br>
Subject: Re: [LLVMdev] x86 cross compiler for ppc fails to build<br>
To: Maarten Faddegon <<a href="mailto:m.faddegon@student.tudelft.nl">m.faddegon@student.tudelft.nl</a>><br>
Cc: <a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a><br>
Message-ID: <<a href="mailto:20110520013913.GA62105@cs.nctu.edu.tw">20110520013913.GA62105@cs.nctu.edu.tw</a>><br>
Content-Type: text/plain; charset=utf-8<br>
<br>
Hi, Maarten<br>
<br>
> Can I conclude from this that indeed llvm-gcc for powerpc-linux is broken?<br>
> Is anyone maintaining llvm-gcc for powerpc-linux or is it abandoned?<br>
<br>
  IIRC, llvm-gcc can be built successfully on a Linux/PowerPC machine.<br>
Here was my configuration,<br>
<br>
$ ../llvm-gcc-4.2-2.8.source/configure --prefix=/path/to/install<br>
--program-prefix=llvm- --enable-llvm=/path/to/install<br>
--enable-languages=c,c++ --disable-bootstrap --disable-libmudflap<br>
--disable-multilib --disable-libgomp<br>
$ make install<br>
<br>
  HTH. :-)<br>
<br>
Regards,<br>
chenwj<br>
<br>
--<br>
Wei-Ren Chen (???)<br>
Computer Systems Lab, Institute of Information Science,<br>
Academia Sinica, Taiwan (R.O.C.)<br>
Tel:886-2-2788-3799 #1667<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 6<br>
Date: Fri, 20 May 2011 08:22:29 +0200<br>
From: Jonas Paulsson <<a href="mailto:jnspaulsson@hotmail.com">jnspaulsson@hotmail.com</a>><br>
Subject: Re: [LLVMdev] subregisters, def-kill<br>
To: <<a href="mailto:stoklund@2pi.dk">stoklund@2pi.dk</a>><br>
Cc: LLVMDEV <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
Message-ID: <SNT106-W59BD69822C1DA4E51FD90DB1710@phx.gbl><br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
<br>
I see, thanks.<br>
<br>
I used to work with GCC, which has an SSA-property verification run after each pass. It is surprising to find that LLVM does not check this!<br>
<br>
Jonas<br>
<br>
> Subject: Re: [LLVMdev] subregisters, def-kill<br>
> From: <a href="mailto:stoklund@2pi.dk">stoklund@2pi.dk</a><br>
> Date: Thu, 19 May 2011 15:39:40 -0700<br>
> CC: <a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a><br>
> To: <a href="mailto:jnspaulsson@hotmail.com">jnspaulsson@hotmail.com</a><br>
><br>
><br>
> On May 19, 2011, at 7:47 AM, Jonas Paulsson wrote:<br>
><br>
> > Hi,<br>
> ><br>
> > I am combining 16-bit registers to a 32 bit register in order to make a wide store, as per below:<br>
> ><br>
> > 732 %reg16506:hi16<def,dead> = COPY %reg16445<kill>;<br>
> > 740 %reg16506:lo16<def> = COPY %reg16468<kill>;<br>
> > 748 %r3<def,dead> = store %reg16506<kill>, %r3,<br>
> ><br>
> > As you can see, LiveVariables has marked the high part dead, even though the super-register is used at SlotIndex 748. Why is this? Should I add anything special to the basic BuildMI calls?<br>
><br>
> That code is not in SSA form as LiveVariables requires, there can only be one def per virtual register. You need to use INSERT_SUBREG or REG_SEQUENCE to do this.<br>
><br>
> /jakob<br>
><br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <a href="http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20110520/7bf6d405/attachment-0001.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20110520/7bf6d405/attachment-0001.html</a><br>

<br>
------------------------------<br>
<br>
Message: 7<br>
Date: Fri, 20 May 2011 09:03:37 +0200<br>
From: Duncan Sands <<a href="mailto:baldrick@free.fr">baldrick@free.fr</a>><br>
Subject: Re: [LLVMdev] x86 cross compiler for ppc fails to build<br>
To: <a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a><br>
Message-ID: <<a href="mailto:4DD61249.3070907@free.fr">4DD61249.3070907@free.fr</a>><br>
Content-Type: text/plain; charset=UTF-8; format=flowed<br>
<br>
>> Can I conclude from this that indeed llvm-gcc for powerpc-linux is broken?<br>
>> Is anyone maintaining llvm-gcc for powerpc-linux or is it abandoned?<br>
<br>
You could also try using dragonegg.  The good thing is that you would only<br>
need to build vanilla gcc-4.5 as a cross-compiler.  The bad thing is that<br>
dragonegg has no support for ppc: you would need to port a bunch of logic<br>
from llvm-gcc.<br>
<br>
Ciao, Duncan.<br>
<br>
<br>
------------------------------<br>
<br>
Message: 8<br>
Date: Fri, 20 May 2011 10:40:09 +0300<br>
From: Kalle Raiskila <<a href="mailto:kalle.raiskila@nokia.com">kalle.raiskila@nokia.com</a>><br>
Subject: Re: [LLVMdev] x86 cross compiler for ppc fails to build<br>
To: ext Maarten Faddegon <<a href="mailto:m.faddegon@student.tudelft.nl">m.faddegon@student.tudelft.nl</a>><br>
Cc: <a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a><br>
Message-ID: <<a href="mailto:1305877209.1798.12.camel@LLVMbuilder.research.nokia.com">1305877209.1798.12.camel@LLVMbuilder.research.nokia.com</a>><br>
Content-Type: text/plain; charset="UTF-8"<br>
<br>
On ons, 2011-05-18 at 16:04 +0200, ext Maarten Faddegon wrote:<br>
> I try to build a cross powerpc compiler, but llvm-gcc fails.<br>
<br>
> There are instructions like this one "lis 30, ha16(completed.5554.b)"<br>
> which are not understood apparently?<br>
<br>
If I recall correctly, this was a bug when generating 32bit ppc assembly<br>
on linux. 64bit assembly might work better on linux.<br>
<br>
<br>
kalle<br>
<br>
--<br>
"Modern computing machines are very complex objects"<br>
                      -von Neumann introducing the NORC, 1954<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 9<br>
Date: Fri, 20 May 2011 14:48:48 +0100<br>
From: "Anton Lokhmotov" <<a href="mailto:Anton.Lokhmotov@arm.com">Anton.Lokhmotov@arm.com</a>><br>
Subject: Re: [LLVMdev] [PATCH] OpenCL half support<br>
To: "'Chris Lattner'" <<a href="mailto:clattner@apple.com">clattner@apple.com</a>><br>
Cc: <a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a><br>
Message-ID: <000001cc16f4$a7424070$f5c6c150$@<a href="mailto:Lokhmotov@arm.com">Lokhmotov@arm.com</a>><br>
Content-Type: text/plain; charset="windows-1252"<br>
<br>
Hi Chris,<br>
<br>
> Sorry for dropping this.  Can you resend your current patch?  Lets just<br>
> start and iterate on the llvm patch first.<br>
Please find the LLVM patch attached.<br>
<br>
Many thanks,<br>
Anton.<br>
-------------- next part --------------<br>
A non-text attachment was scrubbed...<br>
Name: llvm00001.patch<br>
Type: application/octet-stream<br>
Size: 11884 bytes<br>
Desc: not available<br>
Url : <a href="http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20110520/ea9b35fb/attachment-0001.obj" target="_blank">http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20110520/ea9b35fb/attachment-0001.obj</a><br>

<br>
------------------------------<br>
<br>
Message: 10<br>
Date: Fri, 20 May 2011 16:41:30 +0200<br>
From: Julien Henry <<a href="mailto:Julien.Henry@imag.fr">Julien.Henry@imag.fr</a>><br>
Subject: [LLVMdev] Compile a project into LLVM Bitcode<br>
To: LLVM Developers Mailing List <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
Message-ID: <<a href="mailto:4DD67D9A.5030809@imag.fr">4DD67D9A.5030809@imag.fr</a>><br>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed<br>
<br>
Hi all,<br>
<br>
I'm trying to compile projects into LLVM Bitcode files instead of<br>
executable binaries, without needing to change the Makefile and the<br>
configure script.<br>
<br>
What is the simplest way of doing that ?<br>
<br>
Thanks<br>
<br>
Julien<br>
<br>
<br>
------------------------------<br>
<br>
Message: 11<br>
Date: Fri, 20 May 2011 10:50:20 -0400<br>
From: Philip Ritchey <<a href="mailto:pritchey@microsemi-wl.com">pritchey@microsemi-wl.com</a>><br>
Subject: Re: [LLVMdev] Compile a project into LLVM Bitcode<br>
To: Julien Henry <<a href="mailto:Julien.Henry@imag.fr">Julien.Henry@imag.fr</a>>, LLVM Developers Mailing List<br>
        <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
Message-ID:<br>
        <<a href="mailto:D80FAF663650884686CE45C915341D8616D7932F@EAGLE.arxandefense.com">D80FAF663650884686CE45C915341D8616D7932F@EAGLE.arxandefense.com</a>><br>
Content-Type: text/plain; charset="us-ascii"<br>
<br>
You can use Clang to compile source to bitcode:<br>
<br>
clang -c hello.c -emit-llvm -o hello.bc<br>
<br>
Hope that helps,<br>
Philip<br>
<br>
-----Original Message-----<br>
From: <a href="mailto:llvmdev-bounces@cs.uiuc.edu">llvmdev-bounces@cs.uiuc.edu</a> [mailto:<a href="mailto:llvmdev-bounces@cs.uiuc.edu">llvmdev-bounces@cs.uiuc.edu</a>] On Behalf Of Julien Henry<br>
Sent: Friday, May 20, 2011 10:42 AM<br>
To: LLVM Developers Mailing List<br>
Subject: [LLVMdev] Compile a project into LLVM Bitcode<br>
<br>
Hi all,<br>
<br>
I'm trying to compile projects into LLVM Bitcode files instead of<br>
executable binaries, without needing to change the Makefile and the<br>
configure script.<br>
<br>
What is the simplest way of doing that ?<br>
<br>
Thanks<br>
<br>
Julien<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>
<br>
<br>
------------------------------<br>
<br>
Message: 12<br>
Date: Fri, 20 May 2011 17:25:47 +0200<br>
From: Julien Henry <<a href="mailto:Julien.Henry@imag.fr">Julien.Henry@imag.fr</a>><br>
Subject: Re: [LLVMdev] Compile a project into LLVM Bitcode<br>
To: Philip Ritchey <<a href="mailto:pritchey@microsemi-wl.com">pritchey@microsemi-wl.com</a>><br>
Cc: LLVM Developers Mailing List <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
Message-ID: <<a href="mailto:4DD687FB.70509@imag.fr">4DD687FB.70509@imag.fr</a>><br>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed<br>
<br>
<br>
> You can use Clang to compile source to bitcode:<br>
><br>
> clang -c hello.c -emit-llvm -o hello.bc<br>
><br>
<br>
Yes.<br>
My problem is to automatically create .bc files with ./configure &&<br>
make. Ideally, when compiling a project like "grep", I'd like to obtain<br>
a single .bc file containing all the project's functions, instead of the<br>
grep binary executable.<br>
<br>
I already tried things like<br>
CC=clang CFLAGS=-emit-llvm ./configure<br>
<br>
But the ./configure fails (indeed, .bc files are not executable, so<br>
configure says the C compiler doesn't work)<br>
<br>
checking for a BSD-compatible install... /usr/bin/install -c<br>
checking whether build environment is sane... yes<br>
checking for a thread-safe mkdir -p... /bin/mkdir -p<br>
checking for gawk... gawk<br>
checking whether make sets $(MAKE)... yes<br>
checking build system type... i686-pc-linux-gnu<br>
checking host system type... i686-pc-linux-gnu<br>
checking for gawk... (cached) gawk<br>
checking for gcc... clang<br>
checking whether the C compiler works... no<br>
configure: error: in `/local/jhenry/examples/grep-2.8':<br>
configure: error: C compiler cannot create executables<br>
See `config.log' for more details<br>
<br>
<br>
------------------------------<br>
<br>
Message: 13<br>
Date: Fri, 20 May 2011 10:39:29 -0500<br>
From: John Criswell <<a href="mailto:criswell@illinois.edu">criswell@illinois.edu</a>><br>
Subject: Re: [LLVMdev] Compile a project into LLVM Bitcode<br>
To: Julien Henry <<a href="mailto:Julien.Henry@imag.fr">Julien.Henry@imag.fr</a>><br>
Cc: LLVM Developers Mailing List <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
Message-ID: <<a href="mailto:4DD68B31.1030505@illinois.edu">4DD68B31.1030505@illinois.edu</a>><br>
Content-Type: text/plain; charset="ISO-8859-1"; format=flowed<br>
<br>
On 5/20/11 10:25 AM, Julien Henry wrote:<br>
>> You can use Clang to compile source to bitcode:<br>
>><br>
>> clang -c hello.c -emit-llvm -o hello.bc<br>
>><br>
> Yes.<br>
> My problem is to automatically create .bc files with ./configure&&<br>
> make. Ideally, when compiling a project like "grep", I'd like to obtain<br>
> a single .bc file containing all the project's functions, instead of the<br>
> grep binary executable.<br>
<br>
There are two approaches that you can take:<br>
<br>
1) You can modify libLTO so that it saves into a file the entire bitcode<br>
that it analyzes.  By default, it just creates the bitcode file in<br>
memory, optimizes it, and then generates native code.  A small addition<br>
can get it to save its results right before it generates native code.<br>
<br>
2) If you're doing whole-program analysis or transformation, you can<br>
build your analysis/transform directly into libLTO.<br>
<br>
-- John T.<br>
> I already tried things like<br>
> CC=clang CFLAGS=-emit-llvm ./configure<br>
><br>
> But the ./configure fails (indeed, .bc files are not executable, so<br>
> configure says the C compiler doesn't work)<br>
><br>
> checking for a BSD-compatible install... /usr/bin/install -c<br>
> checking whether build environment is sane... yes<br>
> checking for a thread-safe mkdir -p... /bin/mkdir -p<br>
> checking for gawk... gawk<br>
> checking whether make sets $(MAKE)... yes<br>
> checking build system type... i686-pc-linux-gnu<br>
> checking host system type... i686-pc-linux-gnu<br>
> checking for gawk... (cached) gawk<br>
> checking for gcc... clang<br>
> checking whether the C compiler works... no<br>
> configure: error: in `/local/jhenry/examples/grep-2.8':<br>
> configure: error: C compiler cannot create executables<br>
> See `config.log' for more details<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>
<br>
<br>
------------------------------<br>
<br>
Message: 14<br>
Date: Fri, 20 May 2011 08:59:47 -0700<br>
From: Jakob Stoklund Olesen <<a href="mailto:stoklund@2pi.dk">stoklund@2pi.dk</a>><br>
Subject: Re: [LLVMdev] subregisters, def-kill<br>
To: Jonas Paulsson <<a href="mailto:jnspaulsson@hotmail.com">jnspaulsson@hotmail.com</a>><br>
Cc: LLVMDEV <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
Message-ID: <<a href="mailto:88B0FA1A-3935-46EE-8F32-689E6CDA467D@2pi.dk">88B0FA1A-3935-46EE-8F32-689E6CDA467D@2pi.dk</a>><br>
Content-Type: text/plain; charset="us-ascii"<br>
<br>
<br>
On May 19, 2011, at 11:22 PM, Jonas Paulsson wrote:<br>
<br>
> I see, thanks.<br>
><br>
> I used to work with GCC, which has an SSA-property verification run after each pass. It is surprising to find that LLVM does not check this!<br>
<br>
It should. Here is how you can fix it:<br>
<br>
- Add a flag to MachineRegisterInfo: isSSA(). It should be true initially and cleared by the 2-addr and phi-elim passes.<br>
<br>
- Add code to MachineVerifier.cpp that checks for multiple virtual register defs when MRI->isSSA() is true.<br>
<br>
Then send your patches to llvm-commits!<br>
<br>
Thanks,<br>
<br>
/jakob<br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <a href="http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20110520/755c26a2/attachment-0001.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20110520/755c26a2/attachment-0001.html</a><br>

<br>
------------------------------<br>
<br>
Message: 15<br>
Date: Sat, 21 May 2011 01:53:56 +0900<br>
From: Jin Gu Kang <<a href="mailto:jaykang10@imrc.kist.re.kr">jaykang10@imrc.kist.re.kr</a>><br>
Subject: [LLVMdev] I want to know examples of recursive types on LLVM<br>
        IR.<br>
To: "<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>" <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
Message-ID:<br>
        <<a href="mailto:3E94D039A2B82544B3E7D48F924B0B25E122329A5A@base.imrc.kist.re.kr">3E94D039A2B82544B3E7D48F924B0B25E122329A5A@base.imrc.kist.re.kr</a>><br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
Hi all<br>
<br>
I want to know examples of recursive types on LLVM IR.<br>
<br>
I read a example of basic recursive type on LLVM Programmer's manual.<br>
<br>
%mylist = type { %mylist*, i32}<br>
<br>
Are there another examples of recursive types on LLVM IR?<br>
<br>
and I want to know what the definition of recursive type is on LLVM IR?<br>
<br>
Thank you,<br>
Jin-Gu Kang<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <a href="http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20110521/93f65121/attachment-0001.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20110521/93f65121/attachment-0001.html</a><br>

<br>
------------------------------<br>
<br>
_______________________________________________<br>
LLVMdev mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@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>
<br>
End of LLVMdev Digest, Vol 83, Issue 33<br>
***************************************<br>
</blockquote></div><br><br clear="all"><br>-- <br>Kind Regards <br><br>Xin Tong <br>
</div>