问题
今天,在使用ROSE自动生成CUDA代码时,遇到一个问题:程序中需要使用纹理存储器对GPU访存进行加速,相应地要生成texture变量声明的代码。由于texture初始化时使用到一个宏,该宏定义在文件头部,这就使得texture的初始化必须在宏定义之后。翻遍了手册,找不到把语句插入preprocessinfo 结点(include,#define )之后的方法,于是退一步打算找到当前scope中第一个语句,然后插到该语句之后。本打算调用firststatement的方法,报错,并且scope中的statement并不全是源码中的语句,会包含一些头文件中的结点。
解决方法
通过比较scope和scope中语句的名字,找到当前源文件中第一个SgStatement
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|