我正在使用代码生成器中固有的llvm masked-store。但是,由于这是一个固有函数,因此无法像使用普通的llvm存储一样将其标记为volatile
。
是否有任何简便的方法将它们标记为volatile
,或在它们周围添加围栏以强制实现类似功能?我在想类似在syncscope
中添加"singlethreaded"
的栅栏,但是我无法确定是否可行。
有问题的代码不允许我包含可变参数:
bldr.CreateMaskedStore(value, addrVal, align, mask);
(我也理解llvm volatile'ness,并且我想让它与其他同步上的原子相反)