[LLVMdev] Packages

Reid Spencer reid at x10sys.com
Mon Nov 17 18:50:02 PST 2003


Chris,

I've done a little more thinking about this (putting source definitions
into bytecode/assembler) files. Despite my previous assertions to the
contrary, using the LLVM type and constant global declarations in the
source definitions section is a little limiting because (a) it limits
the choices for source compiler writers, (b) it might imply a larger
amount of information than would otherwise be possible, and (c) it
implies a contract between LLVM and source compiler writers that LLVM
shouldn't have to support.

So, here's what I suggest:

     1. LLVM supports a named section that contains a BLOB. LLVM doesn't
        care about the contents of the BLOB but will assist in its
        maintenance (see below). To LLVM its a name and a chunk of data.
     2. The name of the section is to allow information from different
        compilers to be distinguished. 
     3. LLVM provides a C++ class that represents the named blob. I'll
        call this class "ExtraInfo". 
     4. Source compiler writers can subclass ExtraInfo to their heart's
        content.
     5. The ExtraInfo class supports pure virtual methods that are
        invoked by LLVM to notify its subclass(es) when an optimization
        causes a function, type or global variable to be deleted. No
        other notifications should be necessary.
     6. During compilation, any ExtraInfo subclasses created by the
        source compiler are attached to the Module object and the
        maintenance provided in 5 is invoked automatically as
        optimizations occur.

Does this sound reasonable?

Reid.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20031117/7b51d682/attachment.sig>


More information about the llvm-dev mailing list