Changeset 628
- Timestamp:
- 08/14/08 13:13:24 (3 months ago)
- Files:
-
- trunk/rphp/compiler/CMakeLists.txt (modified) (1 diff)
- trunk/rphp/compiler/pDriver.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/rphp/compiler/CMakeLists.txt
r627 r628 3 3 4 4 # 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)5 EXECUTE_PROCESS(COMMAND llvm-config --libs core jit bitreader bitwriter linker interpreter x86 OUTPUT_VARIABLE LLVM_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE) 6 6 EXECUTE_PROCESS(COMMAND llvm-config --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIRS OUTPUT_STRIP_TRAILING_WHITESPACE) 7 7 EXECUTE_PROCESS(COMMAND llvm-config --cppflags OUTPUT_VARIABLE LLVM_CPP_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) trunk/rphp/compiler/pDriver.cpp
r626 r628 27 27 #include <boost/algorithm/string.hpp> 28 28 29 #include "llvm/System/DynamicLibrary.h" 29 30 #include "llvm/Bitcode/ReaderWriter.h" 30 31 #include "llvm/ModuleProvider.h" … … 71 72 llvm::MemoryBuffer* mb = llvm::MemoryBuffer::getFile(fileName.c_str(), errMsg); 72 73 if (errMsg->length()) { 73 cerr << "error loading file : " << fileName<< endl;74 cerr << "error loading file [" << fileName << "]: " << *errMsg << endl; 74 75 delete errMsg; 75 76 return; … … 77 78 llvm::ModuleProvider* MP = llvm::getBitcodeModuleProvider(mb, errMsg); 78 79 if (errMsg->length()) { 79 cerr << "error parsing bitcode file : " << fileName<< endl;80 cerr << "error parsing bitcode file [" << fileName << "]: " << *errMsg << endl; 80 81 delete errMsg; 81 82 return; … … 83 84 84 85 // 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"); 87 95 88 96 //llvm::ExecutionEngine* EE = llvm::ExecutionEngine::create(MP, false); 89 97 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; 92 100 delete errMsg; 93 101 return; 94 102 } 103 104 // errMsg isn't needed. 105 delete errMsg; 95 106 96 107 // EE now owns MP … … 104 115 } 105 116 117 EE->runStaticConstructorsDestructors(false); 118 106 119 // Call the rphp_main function with no arguments: 107 120 std::vector<llvm::GenericValue> noargs; 108 121 llvm::GenericValue gv = EE->runFunction(rphpMain, noargs); 122 123 EE->runStaticConstructorsDestructors(true); 109 124 110 125 cout << "module ran, return value is: " << gv.IntVal.toStringSigned(10) << endl;
