Changes between Version 9 and Version 10 of Commentary/Compiler/Backends/LLVM/WIP


Ignore:
Timestamp:
Jun 18, 2010 9:58:11 AM (4 years ago)
Author:
dterei
Comment:

Update tntc status

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Compiler/Backends/LLVM/WIP

    v9 v10  
    2929=== TABLES_NEXT_TO_CODE === 
    3030 
    31 Fix the [wiki:Commentary/Compiler/Backends/LLVM/Issues#TABLES_NEXT_TO_CODE TNTC] issue. 
    32  
    33 There are two possible approaches: 
    34   * Add the needed features to LLVM so that it could natively support this feature. This could be quite a difficult and ambitious project as getting the feature into LLVM would mean fixing all the back-ends so that they support the feature. And you would need to convince the LLVM developers that this feature is worth them supporting which might be a hard sell if they think only GHC would use it. 
    35   * A new ''evil mangler'' to process the assembly produced by LLVM and patch it to support the feature. This wouldn't be so bad if the new ''evil mangler'' was written in Haskell and only did this one fairly simple thing (current ''evil mangler'' is in perl and does a fair few things in addition to TNTC). 
    36  
    37 For either approach, looking at how LLVM's new metadata feature may assist would be very useful: 
    38  
    39  * [http://llvm.org/docs/LangRef.html#metadata] 
    40  * [http://nondot.org/sabre/LLVMNotes/ExtensibleMetadata.txt] 
    41  * [http://nondot.org/sabre/LLVMNotes/EmbeddedMetadata.txt] 
     31We now support [wiki:Commentary/Compiler/Backends/LLVM/Issues#TABLES_NEXT_TO_CODE TNTC] using an approach of gnu as subsections. This seems to work fine but we would like still to move to a pure LLVM solution. Ideally we would implement this in LLVM by allowing a global variable to be associated with a function, so that LLVM is aware that the two will be laid out next to each other and can better optimise (e.g using this approach LLVM should be able to perform constant propagation on info-tables). 
    4232 
    4333=== Optimise the output of the LLVM Back-end ===