diff mbox

[pph] Add filter to prevent streaming out builtin identifiers (issue4802047)

Message ID 20110721001504.249011C128B@gchare.mtv.corp.google.com
State New
Headers show

Commit Message

Gab Charette July 21, 2011, 12:15 a.m. UTC
Changed to use new cpp_is_builtin inline function.

Gab


--
This patch is available for review at http://codereview.appspot.com/4802047
diff mbox

Patch

diff --git a/libcpp/ChangeLog.pph b/libcpp/ChangeLog.pph
index de21994..36369a5 100644
--- a/libcpp/ChangeLog.pph
+++ b/libcpp/ChangeLog.pph
@@ -1,3 +1,9 @@ 
+2011-07-20  Gabriel Charette  <gchare@google.com>
+
+	* include/cpplib.h (cpp_is_builtin): New.
+	* symtab.c (lt_query_macro): Use cpp_is_builtin.
+	* symtab.c (cpp_lt_capture): Filter out builtin identifiers.
+
 2011-06-08  Lawrence Crowl  <crowl@google.com>
 
 	* symtab.c (lt_query_macro): Querying "user builtin" macros should not
diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
index 70d72a4..74e076c 100644
--- a/libcpp/include/cpplib.h
+++ b/libcpp/include/cpplib.h
@@ -667,6 +667,15 @@  struct GTY(()) cpp_hashnode {
   union _cpp_hashnode_value GTY ((desc ("CPP_HASHNODE_VALUE_IDX (%1)"))) value;
 };
 
+
+/* Return true if CHN has a builtin type.  */
+
+static inline bool
+cpp_is_builtin (cpp_hashnode *chn)
+{
+  return (chn->flags & NODE_BUILTIN) && chn->value.builtin < BT_FIRST_USER;
+}
+
 /* Call this first to get a handle to pass to other functions.
 
    If you want cpplib to manage its own hashtable, pass in a NULL
diff --git a/libcpp/symtab.c b/libcpp/symtab.c
index 48c5dcc..aad7277 100644
--- a/libcpp/symtab.c
+++ b/libcpp/symtab.c
@@ -494,8 +494,7 @@  static const char *
 lt_query_macro (cpp_reader *reader, cpp_hashnode *cpp_node)
 {
   const char *definition = NULL;
-  if ((cpp_node->flags & NODE_BUILTIN)
-      && cpp_node->value.builtin < BT_FIRST_USER)
+  if (cpp_is_builtin (cpp_node))
     {
       const char *str = (const char *)cpp_node->ident.str;
       if (   strcmp(str, "__DATE__") == 0
@@ -589,9 +588,15 @@  cpp_lt_capture (cpp_reader *reader)
       hashnode node = table_entry->node;
       if (node)
         {
-          cpp_ident_use *summary_entry = used.entries + summary_index++;
+          cpp_ident_use *summary_entry;
           cpp_hashnode *cpp_node = CPP_HASHNODE (node);
 
+          /* Filter out builtin identifiers.  */
+          if (cpp_is_builtin (cpp_node))
+            continue;
+
+          summary_entry = used.entries + summary_index++;
+
           summary_entry->used_by_directive = cpp_node->used_by_directive;
           summary_entry->expanded_to_text = cpp_node->expanded_to_text;
           summary_entry->ident_len = node->len;