Building poolalloc with current LLVM development branch?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Building poolalloc with current LLVM development branch?

Christian Convey
I'm starting to play around with poolalloc for the first time.  I tried to build it as follows:
1) Clone llvm's git repo, and build it with cmake + ninja.
2) cd .../llvm/projects
3) git clone [hidden email]:llvm-mirror/poolalloc.git

When I went to re-run ninja, (or even CMake by itself), I get errors like the following (truncated for brevity).  Any suggestions for whether I'm trying to use the build system incorrectly, vs. having an incompatible combo of LLVM and poolalloc?

CMake Error at cmake/modules/LLVMProcessSources.cmake:83 (message):
  Found unknown source file
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/strdup.c


  Please update
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/CMakeLists.txt


Call Stack (most recent call first):
  cmake/modules/LLVMProcessSources.cmake:54 (llvm_check_source_file_list)
  cmake/modules/AddLLVM.cmake:263 (llvm_process_sources)
  cmake/modules/AddLLVM.cmake:418 (llvm_add_library)
  projects/poolalloc/runtime/PreRT/CMakeLists.txt:2 (add_llvm_library)



Thanks,
Christian




_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Building poolalloc with current LLVM development branch?

Reid Kleckner-2
I'm pretty sure poolalloc is unmaintained at this point. John Criswell would know more.

On Thu, May 28, 2015 at 11:57 AM, Christian Convey <[hidden email]> wrote:
I'm starting to play around with poolalloc for the first time.  I tried to build it as follows:
1) Clone llvm's git repo, and build it with cmake + ninja.
2) cd .../llvm/projects
3) git clone [hidden email]:llvm-mirror/poolalloc.git

When I went to re-run ninja, (or even CMake by itself), I get errors like the following (truncated for brevity).  Any suggestions for whether I'm trying to use the build system incorrectly, vs. having an incompatible combo of LLVM and poolalloc?

CMake Error at cmake/modules/LLVMProcessSources.cmake:83 (message):
  Found unknown source file
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/strdup.c


  Please update
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/CMakeLists.txt


Call Stack (most recent call first):
  cmake/modules/LLVMProcessSources.cmake:54 (llvm_check_source_file_list)
  cmake/modules/AddLLVM.cmake:263 (llvm_process_sources)
  cmake/modules/AddLLVM.cmake:418 (llvm_add_library)
  projects/poolalloc/runtime/PreRT/CMakeLists.txt:2 (add_llvm_library)



Thanks,
Christian




_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev



_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Building poolalloc with current LLVM development branch?

Will Dietz
John Criswell would definitely be the guy to ask about this, cc'ing him.

Until then, here's what I can tell you:

AFAIK the poolalloc transformation itself is unmaintained and has been
for a while.

The CMake version of the build system is especially unmaintained,
but likely wouldn't be too difficult to get working again.

The poolalloc 'module' (poolalloc+DSA) should build with 'make' on recent LLVM,
but I've only tested DSA recently and only lightly at that :).

Hope this helps,

~Will

On Thu, May 28, 2015 at 4:10 PM, Reid Kleckner <[hidden email]> wrote:

> I'm pretty sure poolalloc is unmaintained at this point. John Criswell would
> know more.
>
> On Thu, May 28, 2015 at 11:57 AM, Christian Convey
> <[hidden email]> wrote:
>>
>> I'm starting to play around with poolalloc for the first time.  I tried to
>> build it as follows:
>> 1) Clone llvm's git repo, and build it with cmake + ninja.
>> 2) cd .../llvm/projects
>> 3) git clone [hidden email]:llvm-mirror/poolalloc.git
>>
>> When I went to re-run ninja, (or even CMake by itself), I get errors like
>> the following (truncated for brevity).  Any suggestions for whether I'm
>> trying to use the build system incorrectly, vs. having an incompatible combo
>> of LLVM and poolalloc?
>>
>> CMake Error at cmake/modules/LLVMProcessSources.cmake:83 (message):
>>   Found unknown source file
>>   /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/strdup.c
>>
>>
>>   Please update
>>   /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/CMakeLists.txt
>>
>>
>> Call Stack (most recent call first):
>>   cmake/modules/LLVMProcessSources.cmake:54 (llvm_check_source_file_list)
>>   cmake/modules/AddLLVM.cmake:263 (llvm_process_sources)
>>   cmake/modules/AddLLVM.cmake:418 (llvm_add_library)
>>   projects/poolalloc/runtime/PreRT/CMakeLists.txt:2 (add_llvm_library)
>>
>>
>>
>> Thanks,
>> Christian
>>
>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> [hidden email]         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>
>
> _______________________________________________
> LLVM Developers mailing list
> [hidden email]         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Building poolalloc with current LLVM development branch?

John Criswell-5
In reply to this post by Christian Convey
Dear Christian,

First, I've never used CMake to build poolalloc.  I've always used the autoconf-based build system.  It is possible that the CMake files for poolalloc are broken.  I recommend using the autoconf-based build system.

Second, you'll be pleased to know that someone (I think Will Dietz) has gotten DSA working with mainline LLVM.  The DSA code compiles, but not the Automatic Pool Allocation optimization code.  To put it another way, poolalloc/lib/DSA compiles and works but poolalloc/lib/PoolAllocate doesn't compile.  I took a snapshot of LLVM trunk and poolalloc trunk awhile ago and put it on Github for my students to use.  You can find it at https://github.com/jtcriswell/llvm-dsa.

Third, my group's work on DSA is demand-driven.  While several of my students are using DSA, I do not presently plan to have them maintain or improve DSA unless their projects require it (that said, I easily see projects that will require enhancing DSA, so this is subject to change).  To the best of my knowledge, no one is currently using or maintaining the Automatic Pool Allocation optimization.  I have no plans that require my group to use it or maintain it at present and don't foresee any in the near future.

Finally, I've noticed a significant increase in the number of people wanting to use DSA in recent months.  I think this indicates a demand (I believe from the research community) for shape graph analysis and a call graph analysis that can handle function pointers.  I'd like to better understand who needs these features, which exact features they need, and whether they have any interest in helping support the analyses long term.

To that end, I'd like to hold a BoF on points-to analysis/call graph analysis at this year's LLVM Developer's Meeting to see who is interested in these analyses, what they really need, and whether there is a way to build something that meets those needs that can be maintained long term.

Regards,

John Criswell

On 5/28/15 1:57 PM, Christian Convey wrote:
I'm starting to play around with poolalloc for the first time.  I tried to build it as follows:
1) Clone llvm's git repo, and build it with cmake + ninja.
2) cd .../llvm/projects
3) git clone [hidden email]

When I went to re-run ninja, (or even CMake by itself), I get errors like the following (truncated for brevity).  Any suggestions for whether I'm trying to use the build system incorrectly, vs. having an incompatible combo of LLVM and poolalloc?

CMake Error at cmake/modules/LLVMProcessSources.cmake:83 (message):
  Found unknown source file
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/strdup.c


  Please update
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/CMakeLists.txt


Call Stack (most recent call first):
  cmake/modules/LLVMProcessSources.cmake:54 (llvm_check_source_file_list)
  cmake/modules/AddLLVM.cmake:263 (llvm_process_sources)
  cmake/modules/AddLLVM.cmake:418 (llvm_add_library)
  projects/poolalloc/runtime/PreRT/CMakeLists.txt:2 (add_llvm_library)



Thanks,
Christian





_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
http://www.cs.rochester.edu/u/criswell

_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Building poolalloc with current LLVM development branch?

Christian Convey
Hi John, thanks, that is all very good news!  Thanks for letting me know.  To be sure I understand what you meant about the repo clone for your students: are you saying that it works for some versions of LLVM, but not the current one?

I'll check in with Will Deitz about his progress on stand-alone DSA.  

Regarding my own needs: I'm basically looking for AA that's as precise as possible, with little regard to how long it takes to compute even on very large programs.  My work should be able to capitalize on context- and flow-sensitive analysis results, as long as the concepts of flow and context aren't too surprising.  

There are two more features that are pretty important for my work: (1) field-sensitivity even in the face of nasty type punning, and (2) not being thrown off by heap allocations that are hidden behind a target program's internal memory management code.

On a slightly related noted, I'm in the middle of a side-conversation with George Burgess and Hal Finkel about what might be a reasonable interface for clients to pose flow- and/or context-sensitive AA queries, in case the underlying AA implementation is capable of making such distinctions.

- Christian



On Sat, May 30, 2015 at 12:06 PM, John Criswell <[hidden email]> wrote:
Dear Christian,

First, I've never used CMake to build poolalloc.  I've always used the autoconf-based build system.  It is possible that the CMake files for poolalloc are broken.  I recommend using the autoconf-based build system.

Second, you'll be pleased to know that someone (I think Will Dietz) has gotten DSA working with mainline LLVM.  The DSA code compiles, but not the Automatic Pool Allocation optimization code.  To put it another way, poolalloc/lib/DSA compiles and works but poolalloc/lib/PoolAllocate doesn't compile.  I took a snapshot of LLVM trunk and poolalloc trunk awhile ago and put it on Github for my students to use.  You can find it at https://github.com/jtcriswell/llvm-dsa.

Third, my group's work on DSA is demand-driven.  While several of my students are using DSA, I do not presently plan to have them maintain or improve DSA unless their projects require it (that said, I easily see projects that will require enhancing DSA, so this is subject to change).  To the best of my knowledge, no one is currently using or maintaining the Automatic Pool Allocation optimization.  I have no plans that require my group to use it or maintain it at present and don't foresee any in the near future.

Finally, I've noticed a significant increase in the number of people wanting to use DSA in recent months.  I think this indicates a demand (I believe from the research community) for shape graph analysis and a call graph analysis that can handle function pointers.  I'd like to better understand who needs these features, which exact features they need, and whether they have any interest in helping support the analyses long term.

To that end, I'd like to hold a BoF on points-to analysis/call graph analysis at this year's LLVM Developer's Meeting to see who is interested in these analyses, what they really need, and whether there is a way to build something that meets those needs that can be maintained long term.

Regards,

John Criswell


On 5/28/15 1:57 PM, Christian Convey wrote:
I'm starting to play around with poolalloc for the first time.  I tried to build it as follows:
1) Clone llvm's git repo, and build it with cmake + ninja.
2) cd .../llvm/projects
3) git clone [hidden email]

When I went to re-run ninja, (or even CMake by itself), I get errors like the following (truncated for brevity).  Any suggestions for whether I'm trying to use the build system incorrectly, vs. having an incompatible combo of LLVM and poolalloc?

CMake Error at cmake/modules/LLVMProcessSources.cmake:83 (message):
  Found unknown source file
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/strdup.c


  Please update
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/CMakeLists.txt


Call Stack (most recent call first):
  cmake/modules/LLVMProcessSources.cmake:54 (llvm_check_source_file_list)
  cmake/modules/AddLLVM.cmake:263 (llvm_process_sources)
  cmake/modules/AddLLVM.cmake:418 (llvm_add_library)
  projects/poolalloc/runtime/PreRT/CMakeLists.txt:2 (add_llvm_library)



Thanks,
Christian





_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
http://www.cs.rochester.edu/u/criswell


_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Building poolalloc with current LLVM development branch?

Christian Convey
In reply to this post by John Criswell-5
Hi Will, 

John Criswell thought that perhaps you've gotten DSA (but not poolalloc) working with the mainline LLVM code.  If that's true, is that something you intend to share?  I for one would love to be able to use it.

- Christian

On Sat, May 30, 2015 at 12:06 PM, John Criswell <[hidden email]> wrote:
Dear Christian,

First, I've never used CMake to build poolalloc.  I've always used the autoconf-based build system.  It is possible that the CMake files for poolalloc are broken.  I recommend using the autoconf-based build system.

Second, you'll be pleased to know that someone (I think Will Dietz) has gotten DSA working with mainline LLVM.  The DSA code compiles, but not the Automatic Pool Allocation optimization code.  To put it another way, poolalloc/lib/DSA compiles and works but poolalloc/lib/PoolAllocate doesn't compile.  I took a snapshot of LLVM trunk and poolalloc trunk awhile ago and put it on Github for my students to use.  You can find it at https://github.com/jtcriswell/llvm-dsa.

Third, my group's work on DSA is demand-driven.  While several of my students are using DSA, I do not presently plan to have them maintain or improve DSA unless their projects require it (that said, I easily see projects that will require enhancing DSA, so this is subject to change).  To the best of my knowledge, no one is currently using or maintaining the Automatic Pool Allocation optimization.  I have no plans that require my group to use it or maintain it at present and don't foresee any in the near future.

Finally, I've noticed a significant increase in the number of people wanting to use DSA in recent months.  I think this indicates a demand (I believe from the research community) for shape graph analysis and a call graph analysis that can handle function pointers.  I'd like to better understand who needs these features, which exact features they need, and whether they have any interest in helping support the analyses long term.

To that end, I'd like to hold a BoF on points-to analysis/call graph analysis at this year's LLVM Developer's Meeting to see who is interested in these analyses, what they really need, and whether there is a way to build something that meets those needs that can be maintained long term.

Regards,

John Criswell


On 5/28/15 1:57 PM, Christian Convey wrote:
I'm starting to play around with poolalloc for the first time.  I tried to build it as follows:
1) Clone llvm's git repo, and build it with cmake + ninja.
2) cd .../llvm/projects
3) git clone [hidden email]

When I went to re-run ninja, (or even CMake by itself), I get errors like the following (truncated for brevity).  Any suggestions for whether I'm trying to use the build system incorrectly, vs. having an incompatible combo of LLVM and poolalloc?

CMake Error at cmake/modules/LLVMProcessSources.cmake:83 (message):
  Found unknown source file
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/strdup.c


  Please update
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/CMakeLists.txt


Call Stack (most recent call first):
  cmake/modules/LLVMProcessSources.cmake:54 (llvm_check_source_file_list)
  cmake/modules/AddLLVM.cmake:263 (llvm_process_sources)
  cmake/modules/AddLLVM.cmake:418 (llvm_add_library)
  projects/poolalloc/runtime/PreRT/CMakeLists.txt:2 (add_llvm_library)



Thanks,
Christian





_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
http://www.cs.rochester.edu/u/criswell


_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Building poolalloc with current LLVM development branch?

John Criswell-5
On 5/30/15 5:52 PM, Christian Convey wrote:
Hi Will, 

John Criswell thought that perhaps you've gotten DSA (but not poolalloc) working with the mainline LLVM code.  If that's true, is that something you intend to share?  I for one would love to be able to use it.

To be clear, that code is *already* shared (i.e., I got it from the poolalloc repository on the llvm.org Subversion server).  My point about mentioning Will is that I think he's the one that updated poolalloc trunk to compile with LLVM trunk (i.e., he's the one we need to thank for moving DSA from LLVM 3.2 to LLVM mainline).

Regards,

John Criswell


- Christian

On Sat, May 30, 2015 at 12:06 PM, John Criswell <[hidden email]> wrote:
Dear Christian,

First, I've never used CMake to build poolalloc.  I've always used the autoconf-based build system.  It is possible that the CMake files for poolalloc are broken.  I recommend using the autoconf-based build system.

Second, you'll be pleased to know that someone (I think Will Dietz) has gotten DSA working with mainline LLVM.  The DSA code compiles, but not the Automatic Pool Allocation optimization code.  To put it another way, poolalloc/lib/DSA compiles and works but poolalloc/lib/PoolAllocate doesn't compile.  I took a snapshot of LLVM trunk and poolalloc trunk awhile ago and put it on Github for my students to use.  You can find it at https://github.com/jtcriswell/llvm-dsa.

Third, my group's work on DSA is demand-driven.  While several of my students are using DSA, I do not presently plan to have them maintain or improve DSA unless their projects require it (that said, I easily see projects that will require enhancing DSA, so this is subject to change).  To the best of my knowledge, no one is currently using or maintaining the Automatic Pool Allocation optimization.  I have no plans that require my group to use it or maintain it at present and don't foresee any in the near future.

Finally, I've noticed a significant increase in the number of people wanting to use DSA in recent months.  I think this indicates a demand (I believe from the research community) for shape graph analysis and a call graph analysis that can handle function pointers.  I'd like to better understand who needs these features, which exact features they need, and whether they have any interest in helping support the analyses long term.

To that end, I'd like to hold a BoF on points-to analysis/call graph analysis at this year's LLVM Developer's Meeting to see who is interested in these analyses, what they really need, and whether there is a way to build something that meets those needs that can be maintained long term.

Regards,

John Criswell


On 5/28/15 1:57 PM, Christian Convey wrote:
I'm starting to play around with poolalloc for the first time.  I tried to build it as follows:
1) Clone llvm's git repo, and build it with cmake + ninja.
2) cd .../llvm/projects
3) git clone [hidden email]

When I went to re-run ninja, (or even CMake by itself), I get errors like the following (truncated for brevity).  Any suggestions for whether I'm trying to use the build system incorrectly, vs. having an incompatible combo of LLVM and poolalloc?

CMake Error at cmake/modules/LLVMProcessSources.cmake:83 (message):
  Found unknown source file
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/strdup.c


  Please update
  /opt/clang-llvm/llvm/projects/poolalloc/runtime/PreRT/CMakeLists.txt


Call Stack (most recent call first):
  cmake/modules/LLVMProcessSources.cmake:54 (llvm_check_source_file_list)
  cmake/modules/AddLLVM.cmake:263 (llvm_process_sources)
  cmake/modules/AddLLVM.cmake:418 (llvm_add_library)
  projects/poolalloc/runtime/PreRT/CMakeLists.txt:2 (add_llvm_library)



Thanks,
Christian





_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
http://www.cs.rochester.edu/u/criswell



-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
http://www.cs.rochester.edu/u/criswell

_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev