v.g.vassilev added a comment.

I think I have addressed all comments from @aaron.ballman and @rsmith.



================
Comment at: clang/include/clang/Lex/Preprocessor.h:1782-1785
   void enableIncrementalProcessing(bool value = true) {
-    IncrementalProcessing = value;
+    // FIXME: Drop this interface.
+    const_cast<LangOptions &>(getLangOpts()).IncrementalExtensions = value;
   }
----------------
aaron.ballman wrote:
> v.g.vassilev wrote:
> > aaron.ballman wrote:
> > > We should be able to drop this as part of this patch, right? (I think you 
> > > can modify the `IncrementalAction` object so that it calls 
> > > `CI.getLangOpts().IncrementalExtensions = true;` if needed, but you're 
> > > passing the cc1 flag to the invocation and so I think you can maybe 
> > > remove this call entirely.)
> > I wanted to do this is a separate commit. I am worried of breaking 
> > downstream users. I remember long time ago @akyrtzi was using this logic. 
> > 
> > There are also a bunch of tests in clang and lldb.
> > I wanted to do this is a separate commit. I am worried of breaking 
> > downstream users. 
> 
> Downstream users have no expectation of this interface remaining stable to 
> begin with, so I'd rather we remove the code unless someone speaks up with a 
> concrete technical problem. That said, I'm fine doing it in a separate commit 
> so that it's easier to raise awareness for downstreams if you think this will 
> be disruptive to them.
I'd prefer doing it in a separate commit. This patch is bulky and we may need 
to revert it making all bots happy. That'd be probably make downstream 
consumers green/red for a while and generate a some email traffic ;)


================
Comment at: clang/lib/CodeGen/CodeGenModule.cpp:6165
+  // Stop squashing the top-level stmts into a single function.
+  if (CurCGF && !CXXGlobalInits.back()->getName().startswith("__stmts__")) {
+    CurCGF->FinishFunction(D->getEndLoc());
----------------
rsmith wrote:
> Instead of a name comparison, can you check whether `CXXGlobalInits.back() == 
> CurCGF->CurFn`?
Awesome! Thanks!


================
Comment at: clang/lib/Parse/ParseDecl.cpp:5395
+  // FIXME: What do we do if we get something in Stmts?
+  assert(!Stmts.size() && "Unsupported multiple stmt!");
+
----------------
rsmith wrote:
> I guess this happens in some pragma situations? Can you put a real diagnostic 
> in here rather than an assert?
That's what I understood from the code. Thanks for clarifying. I added a 
diagnostic.


================
Comment at: clang/lib/Parse/Parser.cpp:1032-1034
+    // FIXME: Remove the incremental processing pre-condition and verify clang
+    // still can pass its test suite, which will harden
+    // `isDeclarationStatement`.
----------------
rsmith wrote:
> Have you tried this with the latest version of the patch? Can the FIXME be 
> removed?
I have tried. The failures are a couple of hundred now. However, the failing 
tests are due to the fact that the tests check for expected diagnostics from 
ill-formed code. There the decisions if something that's a statement or a 
declaration are harder and sometimes we produce unexpected diagnostics. I am 
not sure if we should be fixing the test files.

I will investigate more thoroughly but I have removed the FIXME as the majority 
of the failures are resolved by the current version of the patch.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127284/new/

https://reviews.llvm.org/D127284

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

Reply via email to