I did clang -E and reduced the result to this standalone minimal reproducer: cat > test.m <<EOF typedef id (*IMP)(id, ...); static Class c1; void f1(void) { @selector(f2); IMP v1 = @selector(f3); } EOF for i in $(seq 15) ; do clang -c test.m -o /dev/stdout 2>/dev/null | md5sum ; done | sort | uniq -c | wc -l If you don't know how to fix, I'd like some help filing this upstream.