use __clang__ instead of __GNUC__

because clang has __GNUC__ macro