On 07/05/2013 10:04 AM, Marek Polacek wrote:
+/* This type represents an entry in the hash table. */
Please describe the hash table more up here. What are you tracking?
+ hashval_t h = iterative_hash_object (data->type, 0); + h = iterative_hash_object (data->decl, h);
If you hash the decl as well as the type, the find_slot in ubsan_type_descriptor will almost never find an existing entry.
+uptr_type (void) +{ + return build_nonstandard_integer_type (POINTER_SIZE, 1);
Why not use uintptr_type_node?
I have yet to handle freeing the hash table, but I think I'll need the GTY machinery for this (ubsan is not a pass, so I can't just call it at the end of the pas). Or maybe just create a destructor and use append_to_statement_list.
That won't work; append_to_statement_list is for things that happen at runtime, but freeing the hash table is something that needs to happen in the compiler.
+/* This routine returns a magic number for TYPE. + ??? This is probably too ugly. Tweak it. */ + +static unsigned short +get_tinfo_for_type (tree type)
Why map from size to some magic number rather than use the size directly? Also, "tinfo" sounds to me like something to do with C++ type_info.
Jason