change macros to make it easier to support older llvms
added tests which C version fails