@@ -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
@@ -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
@@ -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;