studied: http://www.ibm.com/developerworks/linux/library/os-createcompilerllvm1/index.html