[llvm-commits] [124571] While reading PCH, Parse Bytecodes directly from memory.
dpatel at apple.com
dpatel at apple.com
Mon Mar 5 14:40:20 PST 2007
Revision: 124571
Author: dpatel
Date: 2007-03-05 14:40:18 -0800 (Mon, 05 Mar 2007)
Log Message:
-----------
While reading PCH, Parse Bytecodes directly from memory.
Modified Paths:
--------------
apple-local/branches/llvm/gcc/c-pch.c
apple-local/branches/llvm/gcc/llvm-backend.cpp
apple-local/branches/llvm/gcc/llvm.h
Modified: apple-local/branches/llvm/gcc/c-pch.c
===================================================================
--- apple-local/branches/llvm/gcc/c-pch.c 2007-03-05 11:35:52 UTC (rev 124570)
+++ apple-local/branches/llvm/gcc/c-pch.c 2007-03-05 22:40:18 UTC (rev 124571)
@@ -415,6 +415,13 @@
if (!flag_preprocess_only)
{
+ /* APPLE LOCAL begin LLVM */
+#ifdef ENABLE_LLVM
+ unsigned char *buf = xmalloc (h.asm_size);
+ if (fread (buf, h.asm_size, 1, f) != 1)
+ cpp_errno (pfile, CPP_DL_ERROR, "reading");
+ llvm_pch_read(buf, h.asm_size);
+#else
unsigned long written;
char * buf = xmalloc (16384);
@@ -428,13 +435,9 @@
cpp_errno (pfile, CPP_DL_ERROR, "reading");
written += size;
}
+#endif
+ /* APPLE LOCAL end LLVM */
free (buf);
- /* APPLE LOCAL begin LLVM */
-#ifdef ENABLE_LLVM
- llvm_pch_read();
-#endif
- /* APPLE LOCAL end LLVM */
-
}
else
{
Modified: apple-local/branches/llvm/gcc/llvm-backend.cpp
===================================================================
--- apple-local/branches/llvm/gcc/llvm-backend.cpp 2007-03-05 11:35:52 UTC (rev 124570)
+++ apple-local/branches/llvm/gcc/llvm-backend.cpp 2007-03-05 22:40:18 UTC (rev 124571)
@@ -189,16 +189,16 @@
/// Read bytecode from PCH file. Initialize TheModue and setup
/// LTypes vector.
-void llvm_pch_read(void) {
+void llvm_pch_read(const unsigned char *Buffer, unsigned Size) {
+ std::string ModuleName = TheModule->getModuleIdentifier();
if (TheModule)
delete TheModule;
- fclose (asm_out_file);
-
- std::string ErrMsg;
clearTargetBuiltinCache();
- TheModule = ParseBytecodeFile(asm_file_name,
+
+ std::string ErrMsg;
+ TheModule = ParseBytecodeBuffer(Buffer, Size, ModuleName,
Compressor::decompressToNewBuffer,
&ErrMsg);
if (!TheModule) {
@@ -207,12 +207,6 @@
exit(1);
}
- // Reopen asm_out_file for the rest of the compiler's use.
- // This also removes llvm byte code from the asm_out_file.
- asm_out_file = fopen (asm_file_name, "w+b");
- if (asm_out_file == 0)
- fatal_error ("can%'t open %s for writing: %m", asm_file_name);
-
// Read LLVM Types string table
readLLVMTypesStringTable();
readLLVMValuesStringTable();
Modified: apple-local/branches/llvm/gcc/llvm.h
===================================================================
--- apple-local/branches/llvm/gcc/llvm.h 2007-03-05 11:35:52 UTC (rev 124570)
+++ apple-local/branches/llvm/gcc/llvm.h 2007-03-05 22:40:18 UTC (rev 124571)
@@ -89,7 +89,7 @@
void llvm_pch_write_init(void);
/* Read bytecodes from PCH file. */
-void llvm_pch_read(void);
+void llvm_pch_read(const unsigned char *, unsigned);
/* llvm_asm_file_start - Start the .s file. */
void llvm_asm_file_start(void);
More information about the llvm-commits
mailing list