LLVM 编译器学习笔记之七十 -- 添加pragma

1、在中定义了循环关键字#pragma clang loop的类型

loop-hint-keyword:enable, disable, assume_safety

loop-hint-value:constant-expression

2、 使用#pragma clang loop unroll_count(x)指示循环展开,或者命令行-mllvm -unroll-count,参考discuss 76347

3、类似gcc, 可以使用 #pragma clang attribute push/pop, Compiler Explorer

详见 Clang Language Extensions — Clang 8 documentation

 #pragma clang attribute push(__attribute__((optnone)), apply_to = function)

4、#pragma pop_macro 在commit c0a585d63c支持合入

5、使用__attribute__((optimize(0))) int main ()关闭优化

6、gcc pragma的介绍 https://gcc.gnu.org/onlinedocs/gcc/Loop-Specific-Pragmas.html

7、添加一个新的pragma force_vectorize 的实例 ,⚙ D156910 [clang] Add pragma force_vectorize (llvm.org)

step1:  词法、语法处理,在Parser::HandlePragmaLoopHint/CheckLoopHintExpr中检查tok

step2:  将关键新建记录 LoopInfoStack::push-->setLookUpInfo, 比如以map记录变量信息

step3:在LoopInfoStack::InsertHelper读取(变量索引),转换为metadata (包括场景识别)

step4: 在合适的patch对metadata解析处理

8、向量化可以通过 #pragma clang loop vectorize(disable) 关闭 Compiler Explorer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值