[llvm-commits] [PATCH] Read llvm bytecodes from PCH file

Devang Patel dpatel at apple.com
Wed Feb 7 17:14:27 PST 2007


This patch enables reading llvm bytecodes from PCH file. Applied.
-
Devang

>
> Index: llvm.h
> ===================================================================
> --- llvm.h      (revision 123555)
> +++ llvm.h      (working copy)
> @@ -83,6 +83,9 @@ void print_llvm(FILE *file, void *LLVM);
> /* Init pch writing. */
> void llvm_pch_write_init(void);
> +/* Read bytecodes from PCH file.  */
> +void llvm_pch_read(void);
> +
> /* llvm_asm_file_start - Start the .s file. */
> void llvm_asm_file_start(void);
> Index: llvm-backend.cpp
> ===================================================================
> --- llvm-backend.cpp    (revision 123555)
> +++ llvm-backend.cpp    (working copy)
> @@ -32,6 +32,7 @@ Software Foundation, 59 Temple Place - S
> #include "llvm/Assembly/Writer.h"
> #include "llvm/Assembly/PrintModulePass.h"
> #include "llvm/Bytecode/WriteBytecodePass.h"
> +#include "llvm/Bytecode/Reader.h"
> #include "llvm/CodeGen/RegAllocRegistry.h"
> #include "llvm/CodeGen/SchedulerRegistry.h"
> #include "llvm/CodeGen/ScheduleDAG.h"
> @@ -184,6 +185,21 @@ void llvm_lang_dependent_init(const char
> oFILEstream *AsmOutStream = 0;
> +void llvm_pch_read(void) {
> +
> +  if (TheModule)
> +    delete TheModule;
> +
> +  fclose (asm_out_file);
> +  std::string ErrMsg;
> +  TheModule = ParseBytecodeFile(asm_file_name, &ErrMsg);
> +  if (!TheModule) {
> +    cerr << "Error reading bytecodes from PCH file\n";
> +    cerr << ErrMsg << "\n";
> +    exit(1);
> +  }
> +}
> +
> // Initialize PCH writing.
> void llvm_pch_write_init(void) {
>    timevar_push(TV_LLVM_INIT);
> Index: c-pch.c
> ===================================================================
> --- c-pch.c     (revision 123555)
> +++ c-pch.c     (working copy)
> @@ -429,6 +429,12 @@ c_common_read_pch (cpp_reader *pfile, co
>           written += size;
>         }
>        free (buf);
> +      /* APPLE LOCAL begin LLVM */
> +#ifdef ENABLE_LLVM
> +      llvm_pch_read();
> +#endif
> +  /* APPLE LOCAL end LLVM */
> +
>      }
>    else
>      {
> @@ -438,6 +444,7 @@ c_common_read_pch (cpp_reader *pfile, co
>         cpp_errno (pfile, CPP_DL_ERROR, "seeking");
>      }
> +
>    cpp_prepare_state (pfile, &smd);
>    gt_pch_restore (f);
> Index: llvm-linker-hack.cpp
> ===================================================================
> --- llvm-linker-hack.cpp        (revision 123555)
> +++ llvm-linker-hack.cpp        (working copy)
> @@ -26,6 +26,7 @@ Software Foundation, 59 Temple Place - S
> #include "llvm/Analysis/LoadValueNumbering.h"
> #include "llvm/Transforms/IPO.h"
> #include "llvm/Bytecode/Writer.h"
> +#include "llvm/Bytecode/Reader.h"
> #include "llvm/CodeGen/ScheduleDAG.h"
> #include "llvm/CodeGen/Passes.h"
> #include "llvm/Support/Streams.h"
> @@ -41,6 +42,7 @@ void dummy_function() {
>    new llvm::ExistingModuleProvider(0);
>    llvm::createVerifierPass();
>    llvm::WriteBytecodeToFile(0, llvm::cout);
> +  llvm::ParseBytecodeFile(NULL,NULL);
>    llvm::createInstructionCombiningPass();
>    llvm::createScalarReplAggregatesPass();
> Index: Makefile.in
> ===================================================================
> --- Makefile.in (revision 123555)
> +++ Makefile.in (working copy)
> @@ -1069,7 +1069,7 @@ endif
> # We use llvm-config to determine the libraries that we need to  
> link in our
> # target, optimizations analyses and the bcwriter.
> -LLVMCOMPONENTS := $(LLVMTARGETOBJ) scalaropts transformutils  
> analysis bcwriter ipo
> +LLVMCOMPONENTS := $(LLVMTARGETOBJ) scalaropts transformutils  
> analysis bcwriter ipo bcreader
> LLVMLIBFILES := $(shell $(LLVMBINPATH)/llvm-config --libfiles $ 
> (LLVMCOMPONENTS))
> LLVMLDFLAGS := $(shell $(LLVMBINPATH)/llvm-config --ldflags)
> LIBS += $(LLVMLDFLAGS)
> [dp5.apple.com:/Volumes/src/llvm-gcc/gcc]$
>




More information about the llvm-commits mailing list