[LLVMdev] Next GC patch for review

Gordon Henriksen gordonhenriksen at mac.com
Sun Dec 9 07:40:13 PST 2007


This patch adds a string attribute to each function which enables GC  
codegen and selects the metadata format to generate. In order to avoid  
adding a word to each Function for programs which do not use garbage  
collection (e.g. llvm-gcc, clang), this value is stored in an on-the- 
side table.

— Gordon


gc-5a-funattr.patch (+222 -22):

   docs/LangRef.html (+22 -3)
   test/CodeGen/Generic/GC/alloc_loop.ll (+1 -1)
   test/Assembler/2007-09-29-GC.ll (+12)
   include/llvm/Function.h (+7)
   lib/VMCore/Function.cpp (+33)
   include/llvm/Support/ManagedStatic.h (+4)
   lib/Support/ManagedStatic.cpp (+20)
   include/llvm/Bitcode/LLVMBitCodes.h (+3 -1)
   lib/Bitcode/Reader/BitcodeReader.cpp (+14 -1)
   lib/Bitcode/Writer/BitcodeWriter.cpp (+23 -10)
   lib/VMCore/AsmWriter.cpp (+2)
   lib/AsmParser/llvmAsmParser.y (+13 -3)
   lib/AsmParser/LLLexer.cpp (+1)
   lib/Transforms/Utils/CloneModule.cpp (+2)
   include/llvm-c/Core.h (+2)
   lib/VMCore/Core.cpp (+13)
   bindings/ocaml/llvm/llvm.ml (+2)
   bindings/ocaml/llvm/llvm_ocaml.c (+23)
   bindings/ocaml/llvm/llvm.mli (+9)
   test/Bindings/Ocaml/vmcore.ml (+16 -3)

Adds these methods to Function and makes corresponding changes to  
assembly and bitcode:

bool hasCollector() const;
const char *getCollector() const;
void setCollector(const char *);
void clearCollector();

The assembly representation is as such:

define void @f() gc "shadow-stack" { ...

Uses StringPool to unique collector names, which are extremely likely  
to be unique per process.


gc-5b-regen.patch (+1245 -1209):

   lib/AsmParser/llvmAsmParser.cpp.cvs (+1221 -1197)
   lib/AsmParser/llvmAsmParser.h.cvs (+11 -9)
   lib/AsmParser/llvmAsmParser.y.cvs (+13 -3)

Regenerate.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20071209/55693572/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gc-5b-regen.patch
Type: application/octet-stream
Size: 200733 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20071209/55693572/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gc-5a-funattr.patch
Type: application/octet-stream
Size: 21333 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20071209/55693572/attachment-0001.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20071209/55693572/attachment-0001.html>


More information about the llvm-dev mailing list