 Array dependence based optimizations such as automatic vectorization and automatic parallelization are also performed.Profile-guided optimization is also possible.The GCC's back end is partly specified by preprocessor macros and functions specific to a target architecture, for instance to define its endianness, word size, and calling conventions.