Scott A Carr via llvm-dev
2016-Apr-21 20:18 UTC
[llvm-dev] How to insert and MPX bounds check (InLineAsm) without memory fence?
Hello, Inside my ModulePass I would like to insert an MPX bounds check instruction. As far as I know, this is not yet supported by LLVM (please tell me if I am mistaken). I’m creating my bounds check instruction with InLineAsm::get(). My question has to do with the hasSideEffects argument of that function. I’m not that familiar with instruction selection and the backends, but from looking around I think hasSideEffects=True causes a memory fence. The bounds check instruction doesn’t modify any registers or memory so I would like to try to avoid this. However, when I changed it to hasSideEffects=false one of my bounds check instructions was removed. I verified this by inspecting the resulting binary with both hasSideEffects=false and hasSideEffect=true. How can I insert an InLineAsm that definitely won’t be removed and does not cause a memory fence? Or is there a better way? Alternate suggestions or ideas for creating the MPX bounds checks are also welcome. Thank you, Scott A Carr PhD Candidate Purdue University