Background: Now days compilation process for any language is divided into two parts and same is applicable for objective c. Frontend Compiler (Clang) Backend Compiler (LLVM) Frontend Compiler (Clang): Responsibility of front-end compiler is to take a source code and convert into intermediate representation (IR). In case of clang it is LLVM IR. Backend Compiler(LLVM): Responsibility of backend compiler is to take a IR as input and convert into object code. LLVM input is bitstream of LLVM IR (Bitcode) and output is sequence of machine instruction(Object code). Each cpu or processor has different set of M achine instruction, So LLVM output is CPU dependent or it can be executed on specific CPU only. There may be question in your mind that 1) What is the need to divide into these phases? 2) What is LLVM IR? Can we see the LLVM IR as Output? What is the need to divid...