Currently we align function pointers to 2 bytes - only even values. Removing that would shrink function table sizes by half, improving everything from compilation speed to startup speed to runtime speed.
There is now an option to set the alignment, FUNCTION_POINTER_ALIGNMENT. Sadly 1 (the optimal value, that we want) breaks on &Class::method function pointer calls, which llvm assumes have the lower bit zero (see test_polymorph).
Perhaps we can change something in LLVM for this.