On 9/29/11 11:45 AM, Eric Christopher wrote:>> (I'm jumping into the middle of this conversation as it looks like you're discussing something that might be relevant to my work. Sorry I'm not up to speed on the full context of the discussion...) >> >> If you are asking whether anyone is using machinery in LLVM's build system to compile programs into LLVM bitcode files, the answer is yes. The LLVM Makefile machinery is used not only by LLVM but by LLVM sub-projects like SAFECode, Automatic Pool Allocation, and others. Practically every project I work on (either research or open-source) is organized as a sub-project of LLVM. >> >> We compile our run-time libraries into LLVM bitcode files so that their functions can be inter-procedurally inlined and optimized by LLVM (either by llvm-ld or by libLTO). This is simple to do as defining a macro in the Makefile turns this feature on (BYTECODE_LIBRARY=1, IIRC). >> >> If you remove this feature, I will most likely have to re-implement it in all of our projects' Makefiles. I may have to update our test suite Makefiles as well. I'm not sure how time consuming that would be, but I'd rather not have to change all of my projects if I don't have to, even if the change is trivial. >> >> If you have already removed this feature, can you please revert the commits and add it back? > It wouldn't be too bad. It was part of some larger commits, but I'll rework it a little cleaner and add in just the detection of a compiler that can emit bitcode.I'm not exactly sure what you're saying. Are you saying that you will be maintaining this feature as it was in previous versions of LLVM, or are you saying that you're adding an alternate feature which will require that I adapt our Makefiles to use? -- John T.> > Thanks for the note! > > -eric
On Sep 29, 2011, at 10:35 AM, John Criswell wrote:> On 9/29/11 11:45 AM, Eric Christopher wrote: >>> (I'm jumping into the middle of this conversation as it looks like you're discussing something that might be relevant to my work. Sorry I'm not up to speed on the full context of the discussion...) >>> >>> If you are asking whether anyone is using machinery in LLVM's build system to compile programs into LLVM bitcode files, the answer is yes. The LLVM Makefile machinery is used not only by LLVM but by LLVM sub-projects like SAFECode, Automatic Pool Allocation, and others. Practically every project I work on (either research or open-source) is organized as a sub-project of LLVM. >>> >>> We compile our run-time libraries into LLVM bitcode files so that their functions can be inter-procedurally inlined and optimized by LLVM (either by llvm-ld or by libLTO). This is simple to do as defining a macro in the Makefile turns this feature on (BYTECODE_LIBRARY=1, IIRC). >>> >>> If you remove this feature, I will most likely have to re-implement it in all of our projects' Makefiles. I may have to update our test suite Makefiles as well. I'm not sure how time consuming that would be, but I'd rather not have to change all of my projects if I don't have to, even if the change is trivial. >>> >>> If you have already removed this feature, can you please revert the commits and add it back? >> It wouldn't be too bad. It was part of some larger commits, but I'll rework it a little cleaner and add in just the detection of a compiler that can emit bitcode. > > I'm not exactly sure what you're saying. Are you saying that you will be maintaining this feature as it was in previous versions of LLVM, or are you saying that you're adding an alternate feature which will require that I adapt our Makefiles to use?I'll be doing a) - there's no reason for you to need to update your makefiles. The current test-suite has the bits in it, I just moved it down to the test suite because nothing in the actual llvm tree depends on bit code being constructed. On at least darwin and linux platforms -O4 will do a full interprocedural build. Does that not work for you? -eric -eric
On 9/29/11 12:39 PM, Eric Christopher wrote:> On Sep 29, 2011, at 10:35 AM, John Criswell wrote: > >> On 9/29/11 11:45 AM, Eric Christopher wrote: >>>> (I'm jumping into the middle of this conversation as it looks like you're discussing something that might be relevant to my work. Sorry I'm not up to speed on the full context of the discussion...) >>>> >>>> If you are asking whether anyone is using machinery in LLVM's build system to compile programs into LLVM bitcode files, the answer is yes. The LLVM Makefile machinery is used not only by LLVM but by LLVM sub-projects like SAFECode, Automatic Pool Allocation, and others. Practically every project I work on (either research or open-source) is organized as a sub-project of LLVM. >>>> >>>> We compile our run-time libraries into LLVM bitcode files so that their functions can be inter-procedurally inlined and optimized by LLVM (either by llvm-ld or by libLTO). This is simple to do as defining a macro in the Makefile turns this feature on (BYTECODE_LIBRARY=1, IIRC). >>>> >>>> If you remove this feature, I will most likely have to re-implement it in all of our projects' Makefiles. I may have to update our test suite Makefiles as well. I'm not sure how time consuming that would be, but I'd rather not have to change all of my projects if I don't have to, even if the change is trivial. >>>> >>>> If you have already removed this feature, can you please revert the commits and add it back? >>> It wouldn't be too bad. It was part of some larger commits, but I'll rework it a little cleaner and add in just the detection of a compiler that can emit bitcode. >> I'm not exactly sure what you're saying. Are you saying that you will be maintaining this feature as it was in previous versions of LLVM, or are you saying that you're adding an alternate feature which will require that I adapt our Makefiles to use? > I'll be doing a) - there's no reason for you to need to update your makefiles. The current test-suite has the bits in it, I just moved it down to the test suite because nothing in the actual llvm tree depends on bit code being constructed.I think you misunderstand. The runtime libraries for my projects build a bitcode library (i.e., when I do a top-level "make" in my projects, bitcode libraries are built); they rely on LLVM's build system to do this. If I have to change those Makefiles to use something like -emit-llvm or -O4, then not only will I spend my time updating the Makefiles that build my libraries, but I will also spend time updating the Makefiles that link in those libraries (because they'll no longer be suffixed with .bca). Moving the feature to test-suite doesn't fix anything. The LLVM build system is designed so that it can be easily reused by projects (a feature I implemented in the build system in the early days). The test-suite build system is not quite so easily reused (or, at least, it's not designed to be, so I don't expect it to be). I'd probably be better off adding custom build rules to my projects' Makefiles than trying to reuse test-suite Makefiles. I can certainly make the changes, and I don't think it'll take too much of my time. The question I have is why are you removing a feature that I and other people are using? If removing the feature makes LLVM significantly easier to maintain or paves the way for a new feature in the build system, then the inconvenience I'll face is worth it. On the other hand, if you're just removing the feature because you don't see a need for it, then from my perspective, I'm inconvenienced for nothing. -- John T.