Changeset 628

Show
Ignore:
Timestamp:
08/14/08 13:13:24 (3 months ago)
Author:
weyrick
Message:

more noodling

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/rphp/compiler/CMakeLists.txt

    r627 r628  
    33 
    44# TODO: move this to a FindLLVM in cmake/modules 
    5 EXECUTE_PROCESS(COMMAND llvm-config --libs core jit bitreader bitwriter linker interpreter OUTPUT_VARIABLE LLVM_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE) 
     5EXECUTE_PROCESS(COMMAND llvm-config --libs core jit bitreader bitwriter linker interpreter x86 OUTPUT_VARIABLE LLVM_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE) 
    66EXECUTE_PROCESS(COMMAND llvm-config --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIRS OUTPUT_STRIP_TRAILING_WHITESPACE) 
    77EXECUTE_PROCESS(COMMAND llvm-config --cppflags OUTPUT_VARIABLE LLVM_CPP_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) 
  • trunk/rphp/compiler/pDriver.cpp

    r626 r628  
    2727#include <boost/algorithm/string.hpp> 
    2828 
     29#include "llvm/System/DynamicLibrary.h" 
    2930#include "llvm/Bitcode/ReaderWriter.h" 
    3031#include "llvm/ModuleProvider.h" 
     
    7172    llvm::MemoryBuffer* mb = llvm::MemoryBuffer::getFile(fileName.c_str(), errMsg); 
    7273    if (errMsg->length()) { 
    73         cerr << "error loading file: " << fileName << endl; 
     74        cerr << "error loading file [" << fileName << "]: " << *errMsg << endl; 
    7475        delete errMsg; 
    7576        return; 
     
    7778    llvm::ModuleProvider* MP = llvm::getBitcodeModuleProvider(mb, errMsg); 
    7879    if (errMsg->length()) { 
    79         cerr << "error parsing bitcode file: " << fileName << endl; 
     80        cerr << "error parsing bitcode file [" << fileName << "]: " << *errMsg << endl; 
    8081        delete errMsg; 
    8182        return; 
     
    8384 
    8485    // MP now owns mb and will delete 
    85     // errMsg isn't needed. 
    86     //delete errMsg; 
     86 
     87    if (llvm::sys::DynamicLibrary::LoadLibraryPermanently("librphp-runtime.so", errMsg)) { 
     88        cerr << "error loading runtime library: " << *errMsg << endl; 
     89        delete errMsg; 
     90        return; 
     91    } 
     92 
     93    //MP->getModule()->setDataLayout("e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"); 
     94    //MP->getModule()->setTargetTriple("x86_64-pc-linux-gnu"); 
    8795 
    8896    //llvm::ExecutionEngine* EE = llvm::ExecutionEngine::create(MP, false); 
    8997    llvm::ExecutionEngine* EE = llvm::ExecutionEngine::createJIT(MP, errMsg); 
    90     if (errMsg->length()) { 
    91         cerr << "no JIT available for this platform?: " << errMsg << endl; 
     98    if (!EE) { 
     99        cerr << *errMsg << endl; 
    92100        delete errMsg; 
    93101        return; 
    94102    } 
     103 
     104    // errMsg isn't needed. 
     105    delete errMsg; 
    95106 
    96107    // EE now owns MP 
     
    104115    } 
    105116 
     117    EE->runStaticConstructorsDestructors(false); 
     118 
    106119    // Call the rphp_main function with no arguments: 
    107120    std::vector<llvm::GenericValue> noargs; 
    108121    llvm::GenericValue gv = EE->runFunction(rphpMain, noargs); 
     122 
     123    EE->runStaticConstructorsDestructors(true); 
    109124 
    110125    cout << "module ran, return value is: " << gv.IntVal.toStringSigned(10) << endl;