Probably you want to a pass to transform select instructions to control flow late, after optimizations have run. Trying to prevent clang IR generation and IR optimizations from forming selects is way too difficult.
I don’t think this transform exists as an independent pass, but you can borrow code from CodeGenPrepare::optimizeSelectInst.
-Eli
You could write your own LLVM pass that lowers select instructions.
Many static analyzers based on LLVM actually do that. See for instance
in IKOS:
https://github.com/NASA-SW-VnV/ikos/blob/master/frontend/llvm/src/pass/lower_select.cpp
Best,
--
Maxime Arthaud
_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev