graph based intermediate representation and backend for optimising compilers