static SourcePtr loadFile(const string &fileName, vector<string> *sourceFiles) { if (sourceFiles != NULL) sourceFiles->push_back(fileName); FILE *f = fopen(fileName.c_str(), "rb"); if (!f) error("unable to open file: " + fileName); fseek(f, 0, SEEK_END); long size = ftell(f); fseek(f, 0, SEEK_SET); assert(size >= 0); char *buf = new char [size + 1]; long n = fread(buf, 1, size, f); fclose(f); assert(n == size); buf[size] = 0; SourcePtr src = new Source(fileName, buf, size); if (llvmDIBuilder != NULL) { llvm::SmallString<260> absFileName(fileName); llvm::sys::fs::make_absolute(absFileName); src->debugInfo = (llvm::MDNode*)llvmDIBuilder->createFile( llvm::sys::path::filename(absFileName), llvm::sys::path::parent_path(absFileName)); } return src; }
static SourcePtr loadFile(llvm::StringRef fileName, vector<string> *sourceFiles) { if (sourceFiles != NULL) sourceFiles->push_back(fileName); SourcePtr src = new Source(fileName); if (llvmDIBuilder != NULL) { PathString absFileName(fileName); llvm::sys::fs::make_absolute(absFileName); src->debugInfo = (llvm::MDNode*)llvmDIBuilder->createFile( llvm::sys::path::filename(absFileName), llvm::sys::path::parent_path(absFileName)); } return src; }