I noticed that C code for 8051 isn't ANSI C compatible. Can You explain what kind of C is it?

sdcc introduces extra keywords (__sfr, __xdata, ...) to address MCU-specific issues/features. Apart from that, sdcc mostly aims at standard compliance.
There is a Wiki page devoted to SDCC's standard compilance: http://sdcc.sourceforge.net/mediawiki/index.php/Standard_compliance

If your specific issues are not covered, could you please provide more information about how sdcc's C is not ANSI C compatible?

Best regards