yaxunl added inline comments.

================
Comment at: test/Headers/opencl-c-header.cl:53-54
@@ +52,4 @@
+// RUN: %clang_cc1 -triple spir-unknown-unknown -emit-llvm -o - 
-finclude-default-header -fmodules -fimplicit-module-maps 
-fmodules-cache-path=%t -fdisable-module-hash -ftime-report %s 2>&1 | FileCheck 
--check-prefix=CHECK --check-prefix=CHECK-MOD %s
+// RUN: chmod u+w %t/opencl_c.pcm
+// RUN: mv %t/opencl_c.pcm %t/1_0.pcm
+
----------------
I checked the size of the pch file. The largest chunk is for function 
declarations. Since it contains about 30k declarations, each one is about 50 
bytes on average, so total size is about 1.6MB.

The AST of function decl is written by ASTDeclWriter::VisitFunctionDecl 
http://clang.llvm.org/doxygen/ASTWriterDecl_8cpp_source.html 

A code snippet is as follows:

 515   Record.push_back((int)D->SClass); // FIXME: stable encoding
  516   Record.push_back(D->IsInline);
  517   Record.push_back(D->IsInlineSpecified);
  518   Record.push_back(D->IsVirtualAsWritten);
  519   Record.push_back(D->IsPure);
  520   Record.push_back(D->HasInheritedPrototype);
  521   Record.push_back(D->HasWrittenPrototype);
  522   Record.push_back(D->IsDeleted);
  523   Record.push_back(D->IsTrivial);
  524   Record.push_back(D->IsDefaulted);
  525   Record.push_back(D->IsExplicitlyDefaulted);
  526   Record.push_back(D->HasImplicitReturnZero);
  527   Record.push_back(D->IsConstexpr);
  528   Record.push_back(D->HasSkippedBody);
  529   Record.push_back(D->IsLateTemplateParsed);
  530   Record.push_back(D->getLinkageInternal());
  531   Record.AddSourceLocation(D->getLocEnd());

Record is like a buffer which will be written to file. It uses a vector of 
int64 to store the values, so it takes space.


http://reviews.llvm.org/D20444



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to