separate gcc/clang specific parts