Ignore:
Timestamp:
Jul 13, 2015, 3:55:59 PM (4 years ago)
Author:
nmedfort
Message:

Made pablo compiler reenterant through alternate compile method that takes a Module parameter.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/pablo/pablo_compiler.h

    r4663 r4665  
    5757class While;
    5858
    59 static IRBuilder<> LLVM_Builder(getGlobalContext());
    60 
    6159struct CompiledPabloFunction {
    6260    const size_t        CarryDataSize;
     
    111109    void InstallExternalFunction(std::string C_fn_name, void * fn_ptr);
    112110    CompiledPabloFunction compile(pablo::PabloFunction & function);
    113     Module * getModule();
     111    std::pair<Function *, size_t> compile(pablo::PabloFunction & function, Module *module);
     112    Module *getModule();
    114113private:
    115114    void GenerateFunction(PabloFunction & function);
    116     void DeclareFunctions(ExecutionEngine * ee);
    117     void Examine(PabloBlock & blk);
    118     void DeclareCallFunctions(ExecutionEngine * ee);
     115    void DeclareFunctions(ExecutionEngine * engine);
     116    void Examine(PabloFunction & function);
     117    void Examine(PabloBlock & block);
     118    void DeclareCallFunctions(PabloFunction & function, ExecutionEngine * engine);
    119119    void SetOutputValue(Value * marker, const unsigned index);
    120120
     
    144144    #endif
    145145
    146 
    147146    ASTToValueMap                       mMarkerMap;
    148147    CarryQueueVector                    mCarryInVector;
    149148    CarryQueueVector                    mCarryOutVector;
    150149
    151 #ifdef USE_LLVM_3_5
    152     Module* const                       mMod;
    153 #else
    154     std::unique_ptr<Module>             mModOwner;
     150
    155151    Module *                            mMod;
    156 #endif
    157152    IRBuilder <> *                      mBuilder;
    158153
     
    161156    VectorType* const                   mBitBlockType;
    162157    IDISA::IDISA_Builder                iBuilder;
    163     PointerType*                        mInputPtr;
     158    PointerType*                        mInputType;
    164159
    165160    PabloBlock *                        mPabloBlock;
Note: See TracChangeset for help on using the changeset viewer.