I'm seeing splay tree usage from tree-ipa-type-escape in the first places of profiles from tramp3d-v4:
samples % image name app name symbol name 141814 6.5462 no-vmlinux no-vmlinux (no symbols) 71471 3.2992 cc1plus cc1plus splay_tree_splay_helper 51114 2.3595 cc1plus cc1plus comptypes 49001 2.2619 cc1plus cc1plus compute_may_aliases ------------------------------------------------------------------------------- 11160 15.6147 cc1plus cc1plus splay_tree_splay 59855 83.7473 cc1plus cc1plus splay_tree_splay_helper 71471 3.2992 cc1plus cc1plus splay_tree_splay_helper 71471 43.1489 cc1plus cc1plus splay_tree_splay_helper [self] 59855 36.1360 cc1plus cc1plus splay_tree_splay_helper 12966 7.8279 libc-2.3.5.so cc1plus strcmp 11404 6.8849 cc1plus cc1plus compare_type_brand 8650 5.2222 cc1plus cc1plus splay_tree_compare_pointers ------------------------------------------------------------------------------- looking into the ipa-type-escape code I wonder if there's a reason to use TYPE_NAME as a key instead of TYPE_UID. Also if TYPE_NAME is necessary, instead of using "<unnamed>" using NULL and special casing that will be a lot faster, too. Can you elaborate on what exactly the datastructure is used for? Maybe for a large number of types it isn't really the most efficient one. Thanks, Richard.