3. FrontAction
clang用一个抽象基类FrontAction来表示前端的操作,如前面调用的CompilerInstance::ExecuteAction输入的对象就是FrontAction派生类,Action本身并没有执行什么特殊的操作,只是作为一种结构上的封装提供用户进入clang核心模块调用的入口,其中ExcuteAction是一个重要的虚函数,在不同的派生类都是通过这个方法来开启不同的操作。以下类图为在OpenCL编译过程中用到的一些Action操作,在生成LLVM IR的过程中主要是通过CodeGenAciton来与内部的实际编译动作关联起来。
