lebedev.ri added inline comments.

================
Comment at: include/clang/AST/Stmt.h:206
+    bool PartOfExplicitCast : 1;
+    unsigned BasePathSize : 32 - 6 - 1 - NumExprBits;
   };
----------------
rsmith wrote:
> lebedev.ri wrote:
> > rjmccall wrote:
> > > lebedev.ri wrote:
> > > > rjmccall wrote:
> > > > > This needs to be serialized.
> > > > Uhm, could you please explain what do you mean by 'serialized'?
> > > It needs to be preserved when writing an ICE into a PCH / module file.  
> > > See the ASTWriter / ASTReader.
> > Aha. I did add handling there but it raises questions:
> >   #  This will silently break with different AST serialization versions.
> >      I'm not sure how to handle it, since `VERSION_MINOR` isn't even read 
> > back.
> >   #  //Does// this need a test? How to write one?
> >      Like `./test/PCH/include-timestamp.cpp`, using `llvm-bcanalyzer`?
> Don't worry about breaking the serialization format. We do not maintain AST 
> file format compatibility in general (neither between major releases nor 
> between any two arbitrary SVN revisions). [We should probably maintain file 
> format compatibility between patch releases, but I don't think that works 
> right now because we check the full version number including the patch level 
> when reading a file.]
> 
> Please do add a test: what you need to do is create a PCH containing an 
> implicit cast expression and then import that AST file and do anything to 
> check that the value is preserved (such as inspecting the output of 
> `-ast-dump`). Maybe you could add this to the existing 
> `test/PCH/cxx_exprs.cpp` test, which already does most of what you want, but 
> doesn't have any `FileCheck` tests on the `-ast-dump` output yet.
Uhm, so i have tried to add a test.
With git master, the `-ast-dump` from the first runline of 
`test/PCH/cxx_exprs.cpp` contains:
```
|-TypedefDecl 0x55a348020b88 </build/clang/test/PCH/cxx_exprs.h:5:1, col:44> 
col:44 referenced static_cast_result 'typeof (static_cast<void *>(0))':'void *'
| `-TypeOfExprType 0x55a348020b50 'typeof (static_cast<void *>(0))' sugar
|   |-ParenExpr 0x55a348020b28 <col:19, col:42> 'void *'
|   | `-CXXStaticCastExpr 0x55a348020af8 <col:20, col:41> 'void *' 
static_cast<void *> <NoOp>
|   |   `-ImplicitCastExpr 0x55a348020ae0 <col:40> 'void *' <NullToPointer>
|   |     `-IntegerLiteral 0x55a348020aa8 <col:40> 'int' 0
|   `-PointerType 0x55a347fe6390 'void *'
|     `-BuiltinType 0x55a347fe5b90 'void'
```
But the last runline (which uses PCH) does not have that.
Unfortunately i know next to nothing about PCH / AST serialization, so i'm not 
sure how to workaround that yet.
It does contain ``-<undeserialized declarations>`, so maybe i have to somehow 
force full deserialization?
{F6733062} {F6733063}


Repository:
  rC Clang

https://reviews.llvm.org/D49508



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

Reply via email to