[cfe-dev] Pushable #pragma diagnostics

Eli Friedman eli.friedman at gmail.com
Sun Jul 5 15:26:43 PDT 2009


On Sun, Jul 5, 2009 at 2:42 PM, Louis Gerbarg<lgerbarg at gmail.com> wrote:
> Implementing that is actually not particularly difficult, I have a patch
> attached for comment.The patch may require some slight cleanups, but it
> works. I also have some test cases on my system I can cleanup and send if
> people like this extension.

Looks like a good idea; I'll let Chris comment on it, though, since he
first implemented it.

--- a/lib/Lex/Preprocessor.cpp
+++ b/lib/Lex/Preprocessor.cpp
@@ -120,6 +120,20 @@ Preprocessor::~Preprocessor() {
   delete Callbacks;
 }

+bool Preprocessor::popDiagnostics() {
+  if (PreviousDiagnostics.empty())
+    return false;
+
+  Diags = &PreviousDiagnostics.back();
+  PreviousDiagnostics.pop_back();
+
+  return true;
+}

This makes Diags a pointer past the last element of the vector; not a
good idea, even if it does happen to work most of the time.

-Eli



More information about the cfe-dev mailing list